google / skywater-pdk

Open source process design kit for usage with SkyWater Technology Foundry's 130nm node.
https://skywater-pdk.rtfd.io
Apache License 2.0
2.97k stars 388 forks source link

Verilog primitives do not start with the output signal #153

Closed RTimothyEdwards closed 4 years ago

RTimothyEdwards commented 4 years ago

@mithro : According to iverilog output, the first signal in a primitive's pin list must be the output.

Therefore entries like sky130_fd_sc_hd/latest/models/udp_mux_2to1_n/sky130_fd_sc_hd__udp_mux_2to1_n.v are incorrect; e.g.,

primitive sky130_fd_sc_hd__udp_mux_2to1_N ( A0, A1, S, Y );

should instead be

primitive sky130_fd_sc_hd__udp_mux_2to1_N ( Y, A0, A1, S );

In fact, the calls to the primitives are in a different order than the primitive, which is completely wrong; e.g., sky130_fd_sc_hd__mux2i.functional.v has:

   sky130_fd_sc_hd__udp_mux_2to1_N mux_2to1_n0 ( mux_2to1_n0_out_Y, A0, A1, S );

So the primitives are not even internally consistent with their instances.

mithro commented 4 years ago

As far as I can see, this only affects the mux primitives;

 libraries/sky130_fd_sc_hd/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_hd__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_hd__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hd__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hd__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.2/models/udp_mux_2to1_n/sky130_fd_sc_hd__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.2/models/udp_mux_2to1_n/sky130_fd_sc_hd__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.2/models/udp_mux_4to2/sky130_fd_sc_hd__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_hd/v0.0.2/models/udp_mux_4to2/sky130_fd_sc_hd__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.0/models/udp_mux_2to1_n/sky130_fd_sc_hdll__udp_mux_2to1_n.blackbox.v | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.0/models/udp_mux_2to1_n/sky130_fd_sc_hdll__udp_mux_2to1_n.v          | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.0/models/udp_mux_4to2/sky130_fd_sc_hdll__udp_mux_4to2.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.0/models/udp_mux_4to2/sky130_fd_sc_hdll__udp_mux_4to2.v              | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.1/models/udp_mux_2to1_n/sky130_fd_sc_hdll__udp_mux_2to1_n.blackbox.v | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.1/models/udp_mux_2to1_n/sky130_fd_sc_hdll__udp_mux_2to1_n.v          | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.1/models/udp_mux_4to2/sky130_fd_sc_hdll__udp_mux_4to2.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hdll/v0.1.1/models/udp_mux_4to2/sky130_fd_sc_hdll__udp_mux_4to2.v              | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_hs__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_hs__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_hs__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_hs__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_hs__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_hs__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hs__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_hs/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hs__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.blackbox.v       | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.v                | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.blackbox.v       | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.v                | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.2/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.blackbox.v       | 6 +++---
 libraries/sky130_fd_sc_hvl/v0.0.2/models/udp_mux_4to2/sky130_fd_sc_hvl__udp_mux_4to2.v                | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_lp__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_lp__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_lp__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_lp__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_lp__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_lp__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_lp__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_lp/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_lp__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.0/models/udp_mux_2to1_n/sky130_fd_sc_ls__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.0/models/udp_mux_2to1_n/sky130_fd_sc_ls__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.0/models/udp_mux_4to2/sky130_fd_sc_ls__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.0/models/udp_mux_4to2/sky130_fd_sc_ls__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.1/models/udp_mux_2to1_n/sky130_fd_sc_ls__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.1/models/udp_mux_2to1_n/sky130_fd_sc_ls__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.1/models/udp_mux_4to2/sky130_fd_sc_ls__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_ls/v0.1.1/models/udp_mux_4to2/sky130_fd_sc_ls__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_ms__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.0/models/udp_mux_2to1_n/sky130_fd_sc_ms__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_ms__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.0/models/udp_mux_4to2/sky130_fd_sc_ms__udp_mux_4to2.v                  | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_ms__udp_mux_2to1_n.blackbox.v     | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.1/models/udp_mux_2to1_n/sky130_fd_sc_ms__udp_mux_2to1_n.v              | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_ms__udp_mux_4to2.blackbox.v         | 6 +++---
 libraries/sky130_fd_sc_ms/v0.0.1/models/udp_mux_4to2/sky130_fd_sc_ms__udp_mux_4to2.v                  | 6 +++---
 54 files changed, 162 insertions(+), 162 deletions(-)
fangism commented 4 years ago

Drive-by: reordering positional args like this would be a nice job for a proper refactoring tool.

mithro commented 4 years ago

Since these files are auto-generated, a proper refactoring tool is probably not going to be all that helpful.

fangism commented 4 years ago

Since these files are auto-generated, a proper refactoring tool is probably not going to be all that helpful.

Well yes, fixing the generator when there is one is the right solution.