Commit graph

28 commits

Author SHA1 Message Date
Canberk Topal
ea4e9383db [syn] Use sv2v for prim_generic_buf
Convert `prim_generic_buf` to Verilog as well.
Also, replace 'prim_buf' with 'prim_generic_buf' whenever we see a
`prim_buf` in a generated Verilog file.

Fixes #1557

Signed-off-by: Canberk Topal <ctopal@lowrisc.org>
2022-06-01 11:24:19 +01:00
Pirmin Vogel
119ac89130 [syn] Add missing package dependency
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
2021-12-16 14:18:00 +01:00
Zachary Snow
0aa02b0f3f [syn] Use read_verilog -defer in yosys_run_synth.tcl
Newer versions of sv2v carry through elaboration system tasks like
$fatal. ibex_top_tracing uses $fatal, but isn't actually used in the
syn_yosys flow. By using -defer, unused modules like ibex_top_tracing
are not elaborated in Yosys.
2021-10-07 12:29:16 +01:00
Tom Roberts
07c04bc3f1 Fix a couple of synthesis bugs
1. Missing prim_assert in ibex_top.sv (more of an rtl bug but only found
in running synthesis scripts)
2. Write out the pre-mapped netlist before mapping latches

Relates to #1335

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2021-04-14 11:49:48 +01:00
Tom Roberts
6a3200929b [rtl] Add a new top level plus wiring
This commit creates a new top level wrapping the core, register file and
icache RAMs. The tracing top level is also renamed to ibex_top_tracing
to match. This new top level is intended to enable a dual core lockstep
implementation of Ibex.

There are no functional changes in this commit, only wiring.

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2021-04-07 12:07:38 +01:00
Rupert Swarbrick
05b9f51403 [syn] Fail a bit more gracefully if something goes wrong 2021-01-27 10:43:28 +00:00
Greg Chadwick
77b9e9c78c [syn] Add missing include path
With the introduction of dv_fcov_macros.svh we need to add it as an
included path for sv2v.
2021-01-25 17:37:18 +00:00
Greg Chadwick
75e1c28107 [syn] Fix timing reports in synthesis flow
This fixes a bug where .csv.rpt files weren't being generated properly.
OpenSTA was outputting a simple 'Q' or 'D' for start and end path points
where the full instance name was required (which is then fed to yosys to
translate to a human readable name). The issue was in the `timing_report`
proc in syn/tcl/sta_utils.tcl which needed to request the full name of
the start and end points.

The syn README is updated to note which tool versions have been used to
test the flow.

Fixes #1193
2021-01-19 10:24:53 +00:00
Tom Roberts
1efe7a03ed [syn] Fix path in synthesis script
Path to primitives has been updated

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-12-02 09:42:57 +00:00
Tom Roberts
8edcb088da [syn] Add script to print kGE equivalent
Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-09-15 08:45:30 +01:00
Pirmin Vogel
9559bbb6ff Add RegFile parameter for selecting register file implementation
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
2020-08-21 14:20:34 +02:00
Pirmin Vogel
2ef5e5e3f2 Add a single RV32M enum parameter to select multiplier implementation
This commit replaces the previous combination of `RV32M` bit parameter
used to en/disable the M extension and the `MultiplierImplementation`
used to select the multiplier implementation by a single enum parameter.

Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
2020-08-20 11:50:08 +02:00
Pirmin Vogel
4127a5464b B extension: Correct doc and parameter usage
Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
2020-08-20 11:50:08 +02:00
Tom Roberts
35abca14ab [syn] Use latch-based register file in yosys
- Add a technology map for latches (only works with nandgate45 library
  at the moment)
- Add a real latch-based clock gating cell
- Update timing path reporting to differentiate between register and
  latch paths
- Update summary results in README to reflect the latch-based numbers,
  plus add numbers for a micro-riscy-style (RV32EC) config

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-08-10 13:36:32 +01:00
NilsGraf
f9badaf073 Update lec_sv2v.sh 2020-06-19 17:08:39 -07:00
NilsGraf
31d797162c Update lec_sv2v.sh 2020-06-19 17:08:39 -07:00
NilsGraf
7bb64842ba Update lec_sv2v.do 2020-06-19 17:08:39 -07:00
Nils Graf
c453436b75 Add LEC script to formally verify sv2v translation 2020-06-19 17:08:39 -07:00
Tom Roberts
85ce3874eb [syn] Update path to prim_assert
- Also remove unsigned keyword stripping which is no longer required

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-06-08 11:20:09 +01:00
Greg Chadwick
5b97c26510 [syn] Add more Ibex parameters to flow
Can now control writeback stage inclusion, bitmanip extension and
multiplier implementation.
2020-05-20 12:08:10 +01:00
Greg Chadwick
2cfb5e8d78 [syn] Add STA util for investigating feedthroughs 2020-05-20 12:08:10 +01:00
Greg Chadwick
e89a939b0a [syn] Place result directories in sub-directory
syn/ filling up with result directories is a little annoying, this sets
up the default so everything ends up generated under syn/syn_out/. Flow
users can easily change this to meet their personal requirements.
2020-03-12 13:44:09 +00:00
Greg Chadwick
57c97536ec [syn] Synthesis fixes
Correcting some small issues that cause newer versions of OpenSTA to
fail (previously it issued an error and continued).

- ABC/OpenSTA disagree how set_driving_cell command works so introduce
  seperate ABC SDC file
- Run clean before generating STA netlist, otherwise yosys generates
  some assignements to unused wires that OpenSTA's verilog parser dislikes
2020-03-09 15:08:10 +00:00
Greg Chadwick
8e28ba0b9e [syn] Fix synthesis script
* prim_assert now an include so add appropriate include dir
* remove FPGA reg file from synthesised files
2020-02-10 17:01:50 +00:00
Greg Chadwick
639964514c [RTL] Added seperate ALU for branch target
On branches now compute target same cycle as the condition.  This
removes a stall cycle from all taken conditional branches.
2020-01-31 09:32:20 +00:00
Greg Chadwick
2ef34b6d05 [syn] Feed ABC faster clock for better results
Adds an 'uprate' clock period which is subtracted off the desired period
and given to ABC as the target clock period. This gives better overal
timing results with minimal area impact.
2020-01-23 17:41:52 +00:00
Greg Chadwick
79bb6c7832 [syn] Synth flow improvements
Adds significant functionality to synthesis flow. Timing reports are
generated using OpenSTA and an area report is generated. Flow supports
open Nangate45 library from OpenROAD.
2020-01-07 14:09:17 +00:00
Nils Graf
260ed5a98c [syn] Add initial Yosys synthesis script with example lib
This PR includes the following:
- add script syn_yosys.sh, which runs sv2v and yosys for ibex_core
- add example std. cell lib cmos_cells.lib (copied from yosys repo)
- add dummy prim_clock_gating.v module
- add initial yosys synthesis script syn.ys
2019-11-29 17:03:44 +00:00