Skip to content

Improve VPR error message when circuit contains multi-driven nets #330

Closed as not planned
@kmurray

Description

@kmurray

Expected Behaviour

For this input netlist:

.model top
.inputs a b
.outputs c

.names a b c
11 1

.names a c
1 1

.end

VPR should provide a useful error message that the net c (incorrectly) has multiple drivers.

Current Behaviour

Currently this fails an internal consistency check within the netlist data structures:

VPR FPGA Placement and Routing.
Version: 8.0.0-dev+51b49fa
Revision: 51b49fa
Compiled: 2018-04-21T12:54:54 (release build)
Compiler: GNU 5.4.1 on Linux-4.4.0-112-generic x86_64
University of Toronto
[email protected]
This is free open source code under MIT license.

VPR was run with the following command-line:
vpr /project/trees/vtr/vtr_flow/arch/timing/EArch.xml error.blif

Using up to 1 parallel worker(s)

Architecture file: /project/trees/vtr/vtr_flow/arch/timing/EArch.xml
Circuit name: error

Building complex block graph.
Warning 1: io[0].clock[0] unconnected pin in architecture.
Load circuit
Load circuit took 0.00 seconds
Error 1: 
Type: Unrecognized Error
File: /project/trees/vtr/vpr/src/base/netlist.tpp
Line: 1477
Message: Inconsistent block data sizes

Which doesn't tell the user what the problem is.

Possible Solution

Produce a helpful error message such as:

Error 1: 
Type: Netlist Error
File: error.blif
Line: 8
Message: Net 'c' already has a driver (multi-driven nets are not supported)

The checks for this should occur whenever a new driver is created during atom netlist construction (i.e. in vpr/src/base/read_blif.cpp), not when the netlist data structures are being verified.

Steps to Reproduce (for bugs)

  1. Run the above netlist on any standard VTR architecture (e.g. vtr_flow/timing/EArch.xml)

Context

This is a potential common mistake for which VPR has enough context information to give a useful error message, and should do so.

Your Environment

  • VTR revision used: aab0abc
  • Operating System and version: Ubuntu 16.04
  • Compiler version: gcc-5

Metadata

Metadata

Assignees

No one assigned

    Labels

    Good First IssueGood issues for new or first-time contributorsStaleVPRVPR FPGA Placement & Routing ToolenhancementFeature enhancementhelp wanted

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions