Open kmurray opened 6 years ago
If all the drivers have the option of driving a 'Z' then the blif should be legal shouldn't it? I'll implement a check that complains if there's multiple drivers and they're not all able to drive a 'Z'. Edit: I'm just not going to worry about 'Z'. I don't understand this stuff well yet, so I'm going to assume implementing it the way described in the issue is the correct way.
You are correct that driving a high-impedance 'Z' (i.e. disconnecting the driver) would be electrically legal.
However internally VPR assumes that a net only ever have a single driver. If a net has multiple drivers it becomes much less clear how it should be analyzed. For instance, its not clear what the delay of a connection on a multi-driver net should be.
I have kind of same problem where I get the same driver signal of multiple inputs. For example, inputs io_10_17_0 .outputs io_0_5_0 io_0_11_1 io_4_0_1 io_5_0_1 io_5_17_1 io_5_17_0 io_6_0_0 io_7_0_0 io_8_0_0 io_8_17_0 io_8_17_1 io_9_0_1 io_13_1_1 io_13_6_0 io_13_7_1 io_13_11_1 io_13_15_1 .names [0] io_13_6_0 1 1 .names [3] io_13_15_1 1 1 .names io_10_17_0 [1] 1 1 .names io_10_17_0 [1] 1 1 .names io_10_17_0 [1] 1 1 .names io_10_17_0 [1] 1 1 .names [1241] [155] 1 1 .names [1243] [156] 1 1 .names [1245] [157] 1 1 .names [1247] [158] 1 1 .names [1249] [159] 1 1 I am using the VPR 8. Due to this error, I have some errors in abc as well. Thanks
Expected Behaviour
For this input netlist:
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:
Which doesn't tell the user what the problem is.
Possible Solution
Produce a helpful error message such as:
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)
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