diff --git a/docs/user/FlowVariables.md b/docs/user/FlowVariables.md index 22e56c795e..f39c3c32b1 100644 --- a/docs/user/FlowVariables.md +++ b/docs/user/FlowVariables.md @@ -245,7 +245,7 @@ configuration file. | SYNTH_BLACKBOXES| List of cells treated as a black box by Yosys. With Bazel, this can be used to run synthesis in parallel for the large modules of the design. Non-existant modules are ignored silently, useful when listing modules statically, even if modules come and go dynamically.| | | SYNTH_CANONICALIZE_TCL| Specifies a Tcl script with commands to run as part of the synth canonicalize step.| | | SYNTH_GUT| Load design and remove all internal logic before doing synthesis. This is useful when creating a mock .lef abstract that has a smaller area than the amount of logic would allow. bazel-orfs uses this to mock SRAMs, for instance.| 0| -| SYNTH_HDL_FRONTEND| Select an alternative language frontend to ingest the design. Available option is "slang". If the variable is empty, design is read with the Yosys read_verilog command.| | +| SYNTH_HDL_FRONTEND| Select the language frontend to use for ingesting the design. Available options are: "slang" - SystemVerilog input by means of [slang](https://github.com/MikePopoloski/slang) and [yosys-slang](https://github.com/povik/yosys-slang) "yosys" - Verilog and limited SystemVerilog input by means of [internal Yosys support]](https://yosyshq.readthedocs.io/projects/yosys/en/0.40/cmd/read_verilog.html) "verific" - SystemVerilog input via a proprietary extension| slang| | SYNTH_HIERARCHICAL| Enable to Synthesis hierarchically, otherwise considered flat synthesis.| 0| | SYNTH_HIER_SEPARATOR| Separator used for the synthesis flatten stage.| .| | SYNTH_KEEP_MOCKED_MEMORIES| When `SYNTH_MOCK_LARGE_MEMORIES=1`, setting this to 1, will keep mocked memories (not flattening them). This preserves some of the access logic complexity and avoids optimizations outside of the mocked memory.| 1| diff --git a/flow/designs/asap7/aes-block/rules-base.json b/flow/designs/asap7/aes-block/rules-base.json index 22a5a5797c..98699416bb 100644 --- a/flow/designs/asap7/aes-block/rules-base.json +++ b/flow/designs/asap7/aes-block/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 10573, + "value": 19934, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 52923, + "value": 77305, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/asap7/aes-mbff/rules-base.json b/flow/designs/asap7/aes-mbff/rules-base.json index e3db438ed7..3dc497b2ef 100644 --- a/flow/designs/asap7/aes-mbff/rules-base.json +++ b/flow/designs/asap7/aes-mbff/rules-base.json @@ -28,11 +28,11 @@ "compare": "<=" }, "cts__timing__setup__ws": { - "value": -38.2, + "value": -69.5, "compare": ">=" }, "cts__timing__setup__tns": { - "value": -687.0, + "value": -1500.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -49.6, + "value": -72.6, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2160.0, + "value": -3090.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -1130.0, + "value": -1500.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/aes/config.mk b/flow/designs/asap7/aes/config.mk index a8cb544a32..db3d529d9b 100644 --- a/flow/designs/asap7/aes/config.mk +++ b/flow/designs/asap7/aes/config.mk @@ -29,3 +29,5 @@ else ifeq ($(FLOW_VARIANT),combine) $(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)/blackbox/1_synth.v \ $(WORK_HOME)/results/$(PLATFORM)/$(DESIGN_NICKNAME)/blackbox/1_synth.v endif + +export SYNTH_HDL_FRONTEND = yosys \ No newline at end of file diff --git a/flow/designs/asap7/ethmac/config.mk b/flow/designs/asap7/ethmac/config.mk index c7770d7137..85e4ec86f9 100644 --- a/flow/designs/asap7/ethmac/config.mk +++ b/flow/designs/asap7/ethmac/config.mk @@ -10,3 +10,5 @@ export CORE_UTILIZATION = 70 export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 2 export PLACE_DENSITY = 0.75 + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/asap7/ethmac_lvt/config.mk b/flow/designs/asap7/ethmac_lvt/config.mk index ff4d402a11..b784e527e2 100644 --- a/flow/designs/asap7/ethmac_lvt/config.mk +++ b/flow/designs/asap7/ethmac_lvt/config.mk @@ -15,3 +15,5 @@ export PLACE_DENSITY = 0.60 export ASAP7_USE_VT = LVT export RECOVER_POWER = 1 + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/asap7/gcd-ccs/rules-base.json b/flow/designs/asap7/gcd-ccs/rules-base.json index 102e04c4e8..8acbf18d16 100644 --- a/flow/designs/asap7/gcd-ccs/rules-base.json +++ b/flow/designs/asap7/gcd-ccs/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -103.0, + "value": -207.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -102.0, + "value": -187.0, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/asap7/gcd/rules-base.json b/flow/designs/asap7/gcd/rules-base.json index 77f6e8a8d1..87636aea8e 100644 --- a/flow/designs/asap7/gcd/rules-base.json +++ b/flow/designs/asap7/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -281.0, + "value": -422.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -439.0, + "value": -513.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -270.0, + "value": -361.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/asap7/mock-cpu/config.mk b/flow/designs/asap7/mock-cpu/config.mk index 2eb0c35ac2..d4da1466f1 100644 --- a/flow/designs/asap7/mock-cpu/config.mk +++ b/flow/designs/asap7/mock-cpu/config.mk @@ -13,3 +13,5 @@ export PLACE_DENSITY = 0.71 export TNS_END_PERCENT = 100 export IO_CONSTRAINTS = designs/asap7/mock-cpu/io.tcl + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/asap7/riscv32i/config.mk b/flow/designs/asap7/riscv32i/config.mk index 693473f65e..78a26b3915 100644 --- a/flow/designs/asap7/riscv32i/config.mk +++ b/flow/designs/asap7/riscv32i/config.mk @@ -29,3 +29,4 @@ export CTS_CLUSTER_DIAMETER = 50 export SWAP_ARITH_OPERATORS = 1 export OPENROAD_HIERARCHICAL = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/asap7/swerv_wrapper/config.mk b/flow/designs/asap7/swerv_wrapper/config.mk index 1356b5d586..9eb82c537c 100644 --- a/flow/designs/asap7/swerv_wrapper/config.mk +++ b/flow/designs/asap7/swerv_wrapper/config.mk @@ -61,3 +61,4 @@ export ROUTING_LAYER_ADJUSTMENT = 0.2 export SWAP_ARITH_OPERATORS = 1 export OPENROAD_HIERARCHICAL = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/aes/config.mk b/flow/designs/gf12/aes/config.mk index 7145449318..672e50c173 100644 --- a/flow/designs/gf12/aes/config.mk +++ b/flow/designs/gf12/aes/config.mk @@ -18,3 +18,4 @@ else export DESIGN_TYPE = CELL_NODEN endif +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/ariane/config.mk b/flow/designs/gf12/ariane/config.mk index 28194633ef..768470ca9e 100644 --- a/flow/designs/gf12/ariane/config.mk +++ b/flow/designs/gf12/ariane/config.mk @@ -34,3 +34,4 @@ export DESIGN_TYPE = CELL_NODEN endif export REMOVE_ABC_BUFFERS = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/ariane133/config.mk b/flow/designs/gf12/ariane133/config.mk index 28c9649cd7..0107993961 100644 --- a/flow/designs/gf12/ariane133/config.mk +++ b/flow/designs/gf12/ariane133/config.mk @@ -31,3 +31,4 @@ export DESIGN_TYPE = CELL_NODEN endif export REMOVE_ABC_BUFFERS = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/bp_dual/config.mk b/flow/designs/gf12/bp_dual/config.mk index 3f3e20af00..a57f8b7e59 100644 --- a/flow/designs/gf12/bp_dual/config.mk +++ b/flow/designs/gf12/bp_dual/config.mk @@ -66,3 +66,4 @@ export MACRO_WRAPPERS = $(PLATFORM_DIR)/bp/wrappers/wrappers.tcl export PDN_TCL = $(PLATFORM_DIR)/cfg/pdn_grid_strategy_13m_9T.top.tcl export MACRO_PLACE_HALO = 7 7 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/bp_quad/config.mk b/flow/designs/gf12/bp_quad/config.mk index 5846c209b3..16c66c0f61 100644 --- a/flow/designs/gf12/bp_quad/config.mk +++ b/flow/designs/gf12/bp_quad/config.mk @@ -68,3 +68,4 @@ export MACRO_WRAPPERS = $(PLATFORM_DIR)/bp/wrappers/wrappers.tcl export PDN_TCL = $(PLATFORM_DIR)/cfg/pdn_grid_strategy_13m_9T.top.tcl export MACRO_PLACE_HALO = 7 7 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/bp_single/config.mk b/flow/designs/gf12/bp_single/config.mk index 4748ede574..d9ce1e2a56 100644 --- a/flow/designs/gf12/bp_single/config.mk +++ b/flow/designs/gf12/bp_single/config.mk @@ -68,3 +68,4 @@ endif # enable slack margin for setup and hold fix after CTS export SETUP_SLACK_MARGIN ?= 100 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/coyote/config.mk b/flow/designs/gf12/coyote/config.mk index c801e198ec..9b3215030e 100644 --- a/flow/designs/gf12/coyote/config.mk +++ b/flow/designs/gf12/coyote/config.mk @@ -36,3 +36,5 @@ export DESIGN_TYPE = CELL else export DESIGN_TYPE = CELL_NODEN endif + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/gcd/config.mk b/flow/designs/gf12/gcd/config.mk index 470e63993d..76b9e2ce3b 100644 --- a/flow/designs/gf12/gcd/config.mk +++ b/flow/designs/gf12/gcd/config.mk @@ -18,4 +18,4 @@ export DESIGN_TYPE = CELL_NODEN endif export SKIP_GATE_CLONING = 1 - +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/ibex/config.mk b/flow/designs/gf12/ibex/config.mk index 78f928de7f..2a62c37445 100644 --- a/flow/designs/gf12/ibex/config.mk +++ b/flow/designs/gf12/ibex/config.mk @@ -27,3 +27,4 @@ endif # slack margin to address WC corner export SETUP_SLACK_MARGIN ?= 180 export HOLD_SLACK_MARGIN ?= 50 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/jpeg/config.mk b/flow/designs/gf12/jpeg/config.mk index 3a817b948a..06df73b8d7 100644 --- a/flow/designs/gf12/jpeg/config.mk +++ b/flow/designs/gf12/jpeg/config.mk @@ -22,4 +22,4 @@ endif #export SKIP_PIN_SWAP = 1 export SKIP_GATE_CLONING = 1 - +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/swerv_wrapper/config.mk b/flow/designs/gf12/swerv_wrapper/config.mk index 2ed5601613..48e0b91ccf 100644 --- a/flow/designs/gf12/swerv_wrapper/config.mk +++ b/flow/designs/gf12/swerv_wrapper/config.mk @@ -37,3 +37,4 @@ export DESIGN_TYPE = CELL_NODEN endif export REMOVE_ABC_BUFFERS = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf12/tinyRocket/config.mk b/flow/designs/gf12/tinyRocket/config.mk index fe6b436ab9..87f5a98ff1 100644 --- a/flow/designs/gf12/tinyRocket/config.mk +++ b/flow/designs/gf12/tinyRocket/config.mk @@ -38,3 +38,5 @@ export DESIGN_TYPE = CELL else export DESIGN_TYPE = CELL_NODEN endif + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/gf180/aes-hybrid/rules-base.json b/flow/designs/gf180/aes-hybrid/rules-base.json index 6aa28e58ef..ded043ff05 100644 --- a/flow/designs/gf180/aes-hybrid/rules-base.json +++ b/flow/designs/gf180/aes-hybrid/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -144.0, + "value": -208.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -158.0, + "value": -230.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -154.0, + "value": -221.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/aes/rules-base.json b/flow/designs/gf180/aes/rules-base.json index 75ea8f2a34..5f3492a000 100644 --- a/flow/designs/gf180/aes/rules-base.json +++ b/flow/designs/gf180/aes/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -107.0, + "value": -141.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -124.0, + "value": -165.0, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -119.0, + "value": -157.0, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/gf180/uart-blocks/rules-base.json b/flow/designs/gf180/uart-blocks/rules-base.json index 550f2f7174..c5fbb3cee7 100644 --- a/flow/designs/gf180/uart-blocks/rules-base.json +++ b/flow/designs/gf180/uart-blocks/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 726, + "value": 1036, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 18889, + "value": 29243, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json index a17e94afaa..b229c7e221 100644 --- a/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json +++ b/flow/designs/ihp-sg13g2/i2c-gpio-expander/rules-base.json @@ -12,7 +12,7 @@ "compare": "<=" }, "placeopt__design__instance__count__stdcell": { - "value": 951, + "value": 1448, "compare": "<=" }, "detailedplace__design__violations": { @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 38152, + "value": 46152, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/ariane133/config.mk b/flow/designs/nangate45/ariane133/config.mk index 7e2d41bd63..68eff2efe2 100644 --- a/flow/designs/nangate45/ariane133/config.mk +++ b/flow/designs/nangate45/ariane133/config.mk @@ -27,3 +27,5 @@ export RTLMP_MAX_MACRO = 10 export RTLMP_MIN_MACRO = 1 export RTLMP_MAX_INST = 80000 export RTLMP_MIN_INST = 8000 + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/ariane136/config.mk b/flow/designs/nangate45/ariane136/config.mk index 04da1dc265..a3514491c6 100644 --- a/flow/designs/nangate45/ariane136/config.mk +++ b/flow/designs/nangate45/ariane136/config.mk @@ -22,3 +22,5 @@ export MACRO_PLACE_HALO = 10 10 export TNS_END_PERCENT = 100 export PLACE_DENSITY = 0.35 + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/black_parrot/config.mk b/flow/designs/nangate45/black_parrot/config.mk index 771ea51da1..81570558e5 100644 --- a/flow/designs/nangate45/black_parrot/config.mk +++ b/flow/designs/nangate45/black_parrot/config.mk @@ -38,3 +38,5 @@ export MACRO_PLACE_HALO = 10 10 export TNS_END_PERCENT = 100 export HOLD_SLACK_MARGIN = 0.03 + +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/bp_be_top/rules-base.json b/flow/designs/nangate45/bp_be_top/rules-base.json index 92bada3a7b..519e19f31a 100644 --- a/flow/designs/nangate45/bp_be_top/rules-base.json +++ b/flow/designs/nangate45/bp_be_top/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -12.8, + "value": -16.3, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -18.6, + "value": -19.9, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -17.1, + "value": -19.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_fe_top/rules-base.json b/flow/designs/nangate45/bp_fe_top/rules-base.json index fa8424d1d1..9091dc700d 100644 --- a/flow/designs/nangate45/bp_fe_top/rules-base.json +++ b/flow/designs/nangate45/bp_fe_top/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -0.36, + "value": -0.753, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.795, + "value": -1.89, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/bp_multi_top/config.mk b/flow/designs/nangate45/bp_multi_top/config.mk index 8fd92869a9..cb6f83da90 100644 --- a/flow/designs/nangate45/bp_multi_top/config.mk +++ b/flow/designs/nangate45/bp_multi_top/config.mk @@ -35,3 +35,4 @@ export SKIP_GATE_CLONING = 1 export SWAP_ARITH_OPERATORS = 1 export OPENROAD_HIERARCHICAL = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/gcd/rules-base.json b/flow/designs/nangate45/gcd/rules-base.json index 3be227edcb..514c9e0c5f 100644 --- a/flow/designs/nangate45/gcd/rules-base.json +++ b/flow/designs/nangate45/gcd/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 4515, + "value": 5793, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/nangate45/jpeg/rules-base.json b/flow/designs/nangate45/jpeg/rules-base.json index 9560dcdda5..d11187344d 100644 --- a/flow/designs/nangate45/jpeg/rules-base.json +++ b/flow/designs/nangate45/jpeg/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -41.1, + "value": -41.6, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/nangate45/swerv/config.mk b/flow/designs/nangate45/swerv/config.mk index 6625aced49..53d4261347 100644 --- a/flow/designs/nangate45/swerv/config.mk +++ b/flow/designs/nangate45/swerv/config.mk @@ -11,3 +11,4 @@ export CORE_MARGIN = 5 export PLACE_DENSITY_LB_ADDON = 0.25 export TNS_END_PERCENT = 100 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/swerv_wrapper/config.mk b/flow/designs/nangate45/swerv_wrapper/config.mk index 7cfe56aca9..e5d94e555c 100644 --- a/flow/designs/nangate45/swerv_wrapper/config.mk +++ b/flow/designs/nangate45/swerv_wrapper/config.mk @@ -26,3 +26,4 @@ export FASTROUTE_TCL = $(DESIGN_HOME)/$(PLATFORM)/$(DESIGN_NAME)/fastroute.tcl export SWAP_ARITH_OPERATORS = 1 export OPENROAD_HIERARCHICAL = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/nangate45/tinyRocket/rules-base.json b/flow/designs/nangate45/tinyRocket/rules-base.json index 4a1f0fae64..971600da73 100644 --- a/flow/designs/nangate45/tinyRocket/rules-base.json +++ b/flow/designs/nangate45/tinyRocket/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -23.6, + "value": -58.0, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -39.6, + "value": -70.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -33.7, + "value": -69.2, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/rapidus2hp/ethmac/config.mk b/flow/designs/rapidus2hp/ethmac/config.mk index cd2139c796..b70c106f84 100644 --- a/flow/designs/rapidus2hp/ethmac/config.mk +++ b/flow/designs/rapidus2hp/ethmac/config.mk @@ -25,3 +25,4 @@ export CORE_UTILIZATION = $(strip \ export CORE_ASPECT_RATIO = 1 export CORE_MARGIN = 0.75 export PLACE_DENSITY = 0.70 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/rapidus2hp/gcd/config.mk b/flow/designs/rapidus2hp/gcd/config.mk index 5e24cd8d7c..684660f014 100644 --- a/flow/designs/rapidus2hp/gcd/config.mk +++ b/flow/designs/rapidus2hp/gcd/config.mk @@ -30,3 +30,4 @@ export CORE_UTILIZATION = $(strip $(if $(filter 0.15,$(RAPIDUS_PDK_VERSION)), \ export CORE_MARGIN = .5 export PLACE_DENSITY = 0.42 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/rapidus2hp/jpeg/config.mk b/flow/designs/rapidus2hp/jpeg/config.mk index 5fc80731f6..9c0e9c267c 100644 --- a/flow/designs/rapidus2hp/jpeg/config.mk +++ b/flow/designs/rapidus2hp/jpeg/config.mk @@ -36,3 +36,4 @@ export CORE_MARGIN = 0.75 export PLACE_DENSITY = 0.62 export TNS_END_PERCENT = 100 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/sky130hd/chameleon/config.mk b/flow/designs/sky130hd/chameleon/config.mk index cf331a908f..c72bb9562e 100644 --- a/flow/designs/sky130hd/chameleon/config.mk +++ b/flow/designs/sky130hd/chameleon/config.mk @@ -50,4 +50,4 @@ export FP_PDN_RAIL_WIDTH = 0.48 export FP_PDN_RAIL_OFFSET = 0 export TNS_END_PERCENT = 100 - +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/sky130hd/gcd/rules-base.json b/flow/designs/sky130hd/gcd/rules-base.json index b7aced2aee..b5716ec86d 100644 --- a/flow/designs/sky130hd/gcd/rules-base.json +++ b/flow/designs/sky130hd/gcd/rules-base.json @@ -64,7 +64,7 @@ "compare": ">=" }, "detailedroute__route__wirelength": { - "value": 8444, + "value": 10996, "compare": "<=" }, "detailedroute__route__drc_errors": { diff --git a/flow/designs/sky130hd/jpeg/rules-base.json b/flow/designs/sky130hd/jpeg/rules-base.json index f71c0d3e70..a0f1298e90 100644 --- a/flow/designs/sky130hd/jpeg/rules-base.json +++ b/flow/designs/sky130hd/jpeg/rules-base.json @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -8.68, + "value": -22.2, "compare": ">=" }, "globalroute__timing__hold__ws": { diff --git a/flow/designs/sky130hd/microwatt/config.mk b/flow/designs/sky130hd/microwatt/config.mk index 6a2021c3f5..5d7241b7ea 100644 --- a/flow/designs/sky130hd/microwatt/config.mk +++ b/flow/designs/sky130hd/microwatt/config.mk @@ -51,3 +51,4 @@ endif export SWAP_ARITH_OPERATORS = 1 export OPENROAD_HIERARCHICAL = 1 +export SYNTH_HDL_FRONTEND = yosys diff --git a/flow/designs/sky130hd/riscv32i/rules-base.json b/flow/designs/sky130hd/riscv32i/rules-base.json index bc784630ed..41aa713d65 100644 --- a/flow/designs/sky130hd/riscv32i/rules-base.json +++ b/flow/designs/sky130hd/riscv32i/rules-base.json @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -8.38, + "value": -10.1, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/aes/rules-base.json b/flow/designs/sky130hs/aes/rules-base.json index d3e6d07315..bb1ae9f199 100644 --- a/flow/designs/sky130hs/aes/rules-base.json +++ b/flow/designs/sky130hs/aes/rules-base.json @@ -48,11 +48,11 @@ "compare": "<=" }, "globalroute__timing__setup__ws": { - "value": -0.244, + "value": -0.397, "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -2.47, + "value": -5.1, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -0.632, + "value": -1.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/designs/sky130hs/gcd/rules-base.json b/flow/designs/sky130hs/gcd/rules-base.json index 4a60b077ca..3122a2c09a 100644 --- a/flow/designs/sky130hs/gcd/rules-base.json +++ b/flow/designs/sky130hs/gcd/rules-base.json @@ -32,7 +32,7 @@ "compare": ">=" }, "cts__timing__setup__tns": { - "value": -10.5, + "value": -11.2, "compare": ">=" }, "cts__timing__hold__ws": { @@ -52,7 +52,7 @@ "compare": ">=" }, "globalroute__timing__setup__tns": { - "value": -16.3, + "value": -16.7, "compare": ">=" }, "globalroute__timing__hold__ws": { @@ -84,7 +84,7 @@ "compare": ">=" }, "finish__timing__setup__tns": { - "value": -12.0, + "value": -12.7, "compare": ">=" }, "finish__timing__hold__ws": { diff --git a/flow/scripts/synth_preamble.tcl b/flow/scripts/synth_preamble.tcl index d8f98c8f69..be6d584425 100644 --- a/flow/scripts/synth_preamble.tcl +++ b/flow/scripts/synth_preamble.tcl @@ -47,7 +47,8 @@ proc read_design_sources { } { plugin -i slang set slang_args [list \ - -D SYNTHESIS --keep-hierarchy --compat=vcs --ignore-assertions --top $::env(DESIGN_NAME) \ + -D SYNTHESIS --keep-hierarchy --compat=vcs --ignore-assertions \ + --ignore-timing --top $::env(DESIGN_NAME) \ {*}$vIdirsArgs {*}[env_var_or_empty VERILOG_DEFINES]] # slang requires all files at once @@ -75,6 +76,17 @@ proc read_design_sources { } { # Add user arguments lappend slang_args {*}$::env(SYNTH_SLANG_ARGS) + # If the sources are solely .v files, enable Verilog compatibility + set has_non_v_files false + foreach fn $::env(VERILOG_FILES) { + if { [file extension [string trim $fn]] != ".v" } { + set has_non_v_files true + } + } + if { !$has_non_v_files } { + lappend slang_args --std=1364-2005 + } + yosys read_slang {*}$slang_args # Workaround for yosys-slang#119 @@ -97,7 +109,10 @@ proc read_design_sources { } { if { [env_var_exists_and_non_empty SYNTH_BLACKBOXES] } { error "Non-empty SYNTH_BLACKBOXES unsupported with HDL frontend \"verific\"" } - } elseif { ![env_var_exists_and_non_empty SYNTH_HDL_FRONTEND] } { + } elseif { + [env_var_equals SYNTH_HDL_FRONTEND yosys] || + ![env_var_exists_and_non_empty SYNTH_HDL_FRONTEND] + } { verilog_defaults -push if { [env_var_exists_and_non_empty VERILOG_DEFINES] } { verilog_defaults -add {*}$::env(VERILOG_DEFINES) diff --git a/flow/scripts/variables.yaml b/flow/scripts/variables.yaml index 6c35de5f87..0c4888349b 100644 --- a/flow/scripts/variables.yaml +++ b/flow/scripts/variables.yaml @@ -240,11 +240,15 @@ SYNTH_KEEP_MOCKED_MEMORIES: - synth SYNTH_HDL_FRONTEND: description: > - Select an alternative language frontend to ingest the design. Available option - is "slang". If the variable is empty, design is read with the Yosys read_verilog - command. + Select the language frontend to use for ingesting the design. Available options + are: + + "slang" - SystemVerilog input by means of [slang](https://github.com/MikePopoloski/slang) and [yosys-slang](https://github.com/povik/yosys-slang) + "yosys" - Verilog and limited SystemVerilog input by means of [internal Yosys support]](https://yosyshq.readthedocs.io/projects/yosys/en/0.40/cmd/read_verilog.html) + "verific" - SystemVerilog input via a proprietary extension stages: - synth + default: "slang" SYNTH_SLANG_ARGS: description: > Additional arguments passed to the slang frontend during synthesis.