Commit graph

1972 commits

Author SHA1 Message Date
Rupert Swarbrick
6ebc6bcb9f [simple_system] Fix type for mhpmcounter_get
It's probably clearer if this 64-bit counter is treated as a uint64_t,
not an int64_t (the code using it downstream expects non-negative
values).
2021-02-25 15:34:02 +00:00
Greg Chadwick
99b8f61223 [rtl] Debug mode controller changes
* `if` in `DBG_TAKEN_IF` is needless as the conditions it checks will be
  true if controller enters `DBG_TAKEN_IF` state

* flop `enter_debug_mode` so `FLUSH` state looks at what
  `enter_debug_mode` was when it was seen in `DECODE` state rather than
  what it has become. In particular the controller could enter `FLUSH`
  on the basis of performing a WFI then divert down the debug control
  path due to a new debug request being raised. In this instance it is
  preferable for the WFI to complete entering `SLEEP` before the debug
  request wakes the core back up.
2021-02-18 17:34:17 +00:00
Philipp Wagner
65287f7d7b Fix deprecated sphinx html_context usage in conf.py
We were using the old html_context which has been deprecated
for a while. This PR switches to html_css_files instead.
See sphinx-doc/sphinx#8885 for more information.
2021-02-18 12:06:38 +00:00
Greg Chadwick
7cee76bf05 [dv] Reorder checks in sim.py
The UVM log should be checked for failures before attempting to process
the core trace log. A simulation failure could mean the trace log
doesn't exist and is is preferable to report the simulation error from
the log rather than trace not found as a failure cause.
2021-02-15 17:52:35 +00:00
Greg Chadwick
0cb2afffa9 Update google_riscv-dv to google/riscv-dv@0b62525
Update code from upstream repository https://github.com/google/riscv-
dv to revision 0b625258549e733082c12e5dc749f05aefb07d5a

* Add a knob to use rounding mode from the instruction (google/riscv-
  dv#767) (taoliug)
* Add rounding mode support for floating point arithmetic instructions
  (google/riscv-dv#766) (taoliug)
* Fix syntax issue (google/riscv-dv#765) (taoliug)
* Add riscv_amo_instr (aneels3)
* convert string to enum type (ishita71)
* Remove unintended errors in the coverage flow (google/riscv-dv#757)
  (taoliug)
* Fix c_test handling in the YAML testlist (google/riscv-dv#756)
  (taoliug)
* Add support for new Spike trace format (google/riscv-dv#755) (Daniel
  Bates)
* Fix google/riscv-dv#751 for floating point coverage (Weicai Yang)
* Fix issues with implemented TODO's (aneels3)
* fix randomize_gpr (aneels3)
* Add file riscv_b_instr.py (ishita71)
* add std_randomize todo (pvipsyash)
* Add todo for floating_point test (ShraddhaDevaiya)
* Add scripts to integrate with Metrics regression platform (Aimee
  Sutton)

Includes a fix to dv/uvm/core_ibex/sim.py to use `asm_test` rather than
`asm_tests` due to changes in RISCV-DV

Signed-off-by: Greg Chadwick <gac@lowrisc.org>
2021-02-04 08:37:00 +00:00
Greg Chadwick
860b085e25 [dv] Add RISCV-DV patch to fix csr_test
The assembly for the  CSR test is generated by a script from RISCV-DV. A
.org directive is required to put the generated code at the correct
start address for the instantiated Ibex core.
2021-02-04 08:37:00 +00:00
Greg Chadwick
aa3067cf43 [dv] Fix MISA CSR reset value
MISA reset value now indicates B extension support
2021-02-04 08:37:00 +00:00
Greg Chadwick
d8b2cb0a68 [dv] Fix issues with timeout on WFI
riscv_interrupt_instr_test and riscv_debug_instr_test aim to produce
interrupt and debug requests once per unique instruction they've seen.
One exception to this is WFI instructions, as these always require an
interrupt or debug request to wake the core. This fixes two timeout
issues with WFI instructions.

1. The return value of `decode_instruction` is used to determine whether
   an instruction should have an interrupt or debug request generated
   for it. For WFI this must always happen or the test will hang.

2. Before calling check_stimulus in a test the testbench waits for 50
   clock cycles. For the riscv_interrupt_instr_test and
   riscv_debug_instr_test if a WFI is executed during these 50 cycles
   the test will hang. This adds a check to see if the core has gone to
   sleep in those tests and if so sends interrupt/debug stimulus to wake
   it up.
2021-02-04 08:37:00 +00:00
Greg Chadwick
e749d8fe3d [dv] Add ePMP support to cs_registers testbench 2021-02-01 12:22:49 +00:00
Greg Chadwick
c8c3c55071 [dv] Fix race condition in cs_registers testbench
The `driver_tick` DPI call drove inputs directly but was being scheduled
in an undefined order with other always_ff blocks.  This results in a
race condition where some always_ff blocks see old inputs and others see
new in the same clock tick. Instead use values from `driver_tick` to
perform NBA updates and avoid the race condition.
2021-02-01 12:22:49 +00:00
Greg Chadwick
8defdc4d6c [doc] Add ePMP information 2021-02-01 12:22:49 +00:00
Greg Chadwick
374e05ec65 [rtl] Add ePMP support to Ibex
This implemements the RISC-V Trusted Execution Environment (TEE) working
group proposal 'PMP Enhancements for memory access and execution
prevention on Machine mode'. The proposal is awaiting ratification and
is not expected to change beyond minor tweaks before it becomes part of
the RISC-V priviledged specification.

No seperate 'classic' PMP only mode is provided as different PMP
behaviour only occurs when the MSECCFG CSR is written to. This CSR is
introduced by the proposal and has no specified function in the current
RISC-V priviledged specification.
2021-02-01 12:22:49 +00:00
Greg Chadwick
373212ee89 [dv] Improve sim.py error reporting
* Handle missing log files with error messages rather than terminating
  on unhandled exceptions
* Output potential failure causes from sim log file into regression log
* Alter per test output to make it clearer what line corresponds to what
  test
* Only output [PASSED] or [FAILED] a single time per test
* Don't output [PASSED] where sim log is good but ISS comparison is not
2021-01-29 16:58:26 +00:00
Rupert Swarbrick
f291d1beb9 [dv] Rename stored copy of run phase
In UVM 1.2, at least, uvm_component (a base class of
core_ibex_base_test) still has a method called run(). Ironically, this
has been renamed to "run_phase" to avoid conflicting with user names,
but the old-style phase names still exist at the moment.

Rename our copy of the phase object to cur_run_phase, which doesn't
conflict. Also, set it back to null at the end of the run_phase()
task. We shouldn't ever use it afterwards, and it's probably a good
idea to explode with a null object error if we do.
2021-01-29 08:14:51 +00:00
Rupert Swarbrick
8d43b854ab [dv] Be explicit about the target priv_mode in wait_ret test
The previous code contained

    wait (dut_vif.dut_cb.priv_mode === select_mode())

and VCS warns that this wait block will only trigger on changes to
explicit arguments. That is, if the in_nested_trap field changes, so
the return value of the select_mode() method would change to match
priv_mode, the wait statement won't finish.

This patch explicitly stores a snapshot of the value of select_mode()
just before the wait line. I think this is the intended behaviour, and
will no longer trigger warnings from VCS.
2021-01-29 08:14:21 +00:00
Rupert Swarbrick
6ab3e4a993 [dv] Wire up alerts to dut probe interface
This silences VCS warnings about the DUT having missing port
connections. It doesn't add any actual testing for these signals.

The patch also re-orders the signals to match the order in
ibex_core_tracing.sv, to make it easier to spot what's going on by
eye.
2021-01-27 17:04:12 +00:00
Rupert Swarbrick
e318cd8dd5 Specify boot address in hex to avoid 32-bit signed overflow
I wonder whether we could use some form of quoting to allow
"32'h8000_0000" to get through Riviera's TCL, but we don't have any
way to test, so let's go with the easy option.
2021-01-27 14:30:58 +00:00
Rupert Swarbrick
05b9f51403 [syn] Fail a bit more gracefully if something goes wrong 2021-01-27 10:43:28 +00:00
Rupert Swarbrick
b295f07b2d [doc] Update dependency descriptions for Spike/OVPsim
This should match what's going on a bit more accurately. The link to
OVPsim now points at the (free of cost) commercial tool: riscv-ovpsim
doesn't support the bitmanip specification that we're using at the
moment.
2021-01-25 17:41:40 +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
Rupert Swarbrick
fbe4e9da08 [verilator] Remove clock gating waiver and add extra warning
The -Wwarn-IMPERFECTSCH flag is suggested in the Verilator docs (to
help spot if we get a clock gating hint wrong). The waiver is no
longer needed because we now add the relevant hint in the
RTL (vendored in prim_generic_clock_gating.sv from OpenTitan).
2021-01-25 10:25:26 +00:00
Rupert Swarbrick
07b65abbd0 [rtl] Fix lint "fix" with DbgTriggerEn
The previous change was wrong: it was trying to define a signal with
DbgHwNumLen bits that contained DbgHwBreakNum - 1. Unfortunately, '1
is *not* the same as a zero-extended version of 1'b1.
2021-01-22 15:26:27 +00:00
Rupert Swarbrick
7624481972 [rtl] Fix lint warning when DbgTriggerEn parameter is set
DbgHwBreakNum - 1 is an int, so generates a warning if it's assigned
to tselect_d (of type logic [DbgHwNumLen-1:0]). Explicitly generate
the value we need as a localparam.

This lint warning doesn't appear by default in the Ibex repository,
because DbgTriggerEn is disabled. It does, however, appear in
OpenTitan because we enable it there.
2021-01-22 13:01:07 +00:00
Greg Chadwick
794d865f56 [dv] Ibex uarch functional coverage
This adds a framework for gathering functional coverage for Ibex
microarchitecture along with a selection of initial coverpoints.
2021-01-22 11:12:08 +00:00
Greg Chadwick
d717e2385e Update lowrisc_ip to lowRISC/opentitan@7aa5c2b89
Update code from upstream repository
https://github.com/lowRISC/opentitan to revision
7aa5c2b890fa5d4e3d0b43e0f5e561cb7743a01d

* [flash] updated flash wrapper md file (Dana Agur)
* [flash / top / ast] functional updates (Timothy Chen)
* [ralgen, dv] Associated changes to ralgen (Srikrishna Iyer)
* [prim_sync_reqack_data] Fix SVA checking DST-to-SRC data stability
  (Pirmin Vogel)
* [dv/keymgr] temp disable alert checking in scb (Cindy Chen)
* [dvsim] Fix a wrong path in print message (Weicai Yang)
* [prim] Teach verilator to recognise a clock gate (Rupert Swarbrick)
* [prim_lc_sync] Add AsyncOn parameter to enable/disable the sync
  flops (Michael Schaffner)
* [clkmgr / top] Add clock divider step down to support lc_ctrl
  transition (Timothy Chen)
* [prim_sync_reqack] Use NRZ protocol internally for increased
  throughput (Pirmin Vogel)
* [prim] correct interface documentation. (Timothy Chen)
* [flash_ctrl] Add tlul configuration interface to prim_flash (Timothy
  Chen)
* [flash_ctrl] Use hamming code for 64b ECC (Timothy Chen)
* [prim/edn] Fix lint error (width mismatch) (Eunchan Kim)

Signed-off-by: Greg Chadwick <gac@lowrisc.org>
2021-01-22 11:12:08 +00:00
Greg Chadwick
698cf93183 [dv] Patch for fcov macros in dv_utils 2021-01-22 11:12:08 +00:00
Pirmin Vogel
c69fc8b6f2 [rtl] Fix overlapping encodings of immediate instructions in tracer package
This commit modifies the encoding of SROI, RORI, SBEXTI, GREVI and GORCI by
forcing Bit 26 to zero to prevent overlapping encodings with FSRI.

The bitmanip draft spec doesn't explicitly state that Bit 26 for those
instructions must be zero. However, those instructions only ever use
log2(XLEN) LSBs of the immediate. This means they don't use Bit 26 in RV32.
Instead, whenever Bit 26 is set, these instructions are instead decoded as
FSRI.
2021-01-21 17:11:47 +01:00
Pirmin Vogel
e64f94e798 [rtl] Fix encoding of ZIP/UNZIP pseudo-instrcutions in tracer package
Just like for the corresponding base instructions SHFLI/UNSHFLI the MSBs of
all these pseudo-instructions must be 6'b0000_10.
2021-01-21 17:11:47 +01:00
Pirmin Vogel
760baa1eb2 [rtl] Fix encoding for ORC16/REV16 instructions in tracer package
This bug was originally found by @micprog.
2021-01-19 15:05:07 +01: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
Greg Chadwick
6a61e0ec0c [rtl] Fix PMP NAPOT matching for 0 PMPGranularity 2021-01-19 10:24:32 +00:00
Tobias Wölfel
d315c38527 [dv] Verilator unused parameter handling
Forward a currently unused parameter.

Disable error exit for warnings. Newer Verilator versions will fail if
for example parameters are unused. As this test does not cover
everything, allow those warning to be printed, but not fail the build.
2021-01-19 09:01:36 +01:00
Tobias Wölfel
ca31ca43f3 [rtl] Add B extension to misa
Reflect the availability of the B extension in the misa register.
2021-01-19 09:01:36 +01:00
Tobias Wölfel
0f2dc5c64a [rtl] Avoid latch creation
Following Verilator warning set default value to avoid the creation of a
latch.
2021-01-11 16:20:33 +01:00
Tobias Wölfel
90c78203cc [rtl] Use tracer parameters for decoding
Instead of repeating the values from the tracer package use the
definitions to decode the instructions.
2021-01-11 16:20:33 +01:00
Tobias Wölfel
3371732f94 [rtl] Disable definition of unused instructions
The parameters are not used as the instructions are not yet widely
supported.
Keep definitions so they can be easily activated later.

Tracked in issue lowrisc/ibex#1228
2021-01-11 16:20:33 +01:00
Tobias Wölfel
90258b6d07 [rtl] Remove unused tracer branch instruction
`INSTR_BALL` was introduced in 47b713fd as a vector instruction.
This is not used and is probably a leftover so can be removed.
2021-01-11 16:20:33 +01:00
Rahul Raveendran
a4238bdd8d [doc/um] Updated the python requirements run command for sw simple system
Signed-off-by: Rahul Raveendran <rahul.raveendran@acconeer.com>
2021-01-11 11:28:56 +00:00
Philipp Wagner
8f3d8f311f CI: The distro-provided pyyaml package is enough
In the past, we did explicitly install pyyaml through PIP to get a
version newer than the one provided in Ubuntu 18.04. Since then we
changed the calling code to not rely on newer pyyaml features and
are thus able to rely on an older version of pyyaml.

The distro-provided version of pyyaml is built with C bindings, which
are significantly faster than the pip-installed version, which uses a
pure Python-implementation of the parser/dumper.
2021-01-09 18:15:08 +00:00
Rupert Swarbrick
625ea2662d Revert "Clear MAKEFLAGS when running dvsim.py"
This reverts commit 31a18ad: the problem that it was working around
was fixed in OpenTitan with commit 249a544, vendored into Ibex as
b1daf9e.
2021-01-08 08:45:56 +00:00
Philipp Wagner
b1daf9e44e Update lowrisc_ip to lowRISC/opentitan@c277e3a8
Update code from upstream repository
https://github.com/lowRISC/opentitan to revision
7e131447da6d5f3044666a17974e15df44f0328b

Updates to Ibex code to match this import:
* Include str_utils in the imported code.
* List new source files in dv/uvm/core_ibex/ibex_dv.f
* Update patches to resolve merge conflicts.
* Update tb_cs_registers.cc and ibex_riscv_compliance.cc to match the
  new return code of simctrl.Exec().

Imported updates:
* Do not require pyyaml >= 5.1 (Philipp Wagner)
* [prim_edn_req] Forward fips signal to consumer (Pirmin Vogel)
* [prim_edn_req] Use prim_sync_reqack_data primitive (Pirmin Vogel)
* [prim_edn_req] De-assert EDN request if packer FIFO has data
  available (Pirmin Vogel)
* [cleanup] Mass replace tabs with spaces (Srikrishna Iyer)
* [lc_ctrl] Add script to generate the LC state based on the ECC poly
  (Michael Schaffner)
* [dvsim] Use list for rsync command (Eunchan Kim)
* [verilator] Only control the reset line when necessary (Rupert
  Swarbrick)
* [dv/csr_utils] Add debug msg for UVM_NOT_OK err (Cindy Chen)
* [dvsim] Add exclude hidden files when needed (Eunchan Kim)
* [prim_sync_reqack] Add variant with associated data and optional
  data reg (Pirmin Vogel)
* [DV, Xcelium] Fix for lowRISC/opentitan#4690 (Srikrishna Iyer)
* [dvsim] Remote copy update (Srikrishna Iyer)
* [prim_edn_req] Add EDN sync and packer gadget primitive (Michael
  Schaffner)
* [prim] Add hamming code as ECC option (Timothy Chen)
* [DV] Cleanup lint warnings with Verible lint (¨Srikrishna)
* [prim_ram] Rearrange parity bit packing and fix wrong wmask settings
  (Michael Schaffner)
* [lc_sync/lc_sender] Absorb flops within lc_sender (Michael
  Schaffner)
* [prim_otp_pkg] Move prim interface constants into separate package
  (Michael Schaffner)
* [sram_ctrl] Pull scr macro out of sram_ctrl (Michael Schaffner)
* [top] Move alert handler to periphs and attach escalation clock to
  ibex (Michael Schaffner)
* [prim_esc_rxtx/rv_core_ibex] Add default values and NMI
  synchronization (Michael Schaffner)
* [dvsim] Fix regression publish result link with --remote switch
  (Cindy Chen)
* [vendor/ibex] Remove duplicate check tool requirements files
  (Michael Schaffner)
* [prim_ram_1p_scr] Fix sequencing bug in scrambling logic (Michael
  Schaffner)
* [prim_ram*_adv] Qualify error output signals with rvalid (Michael
  Schaffner)
* [dvsim] Fix purge not delete remote repo_top (Cindy Chen)
* [lc/otp/alerts] Place size-only buffers on all multibit signals
  (Michael Schaffner)
* [prim_buf] Add generic and Xilinx buffer primitive (Michael
  Schaffner)
* [prim] Packer to add byte hint assertion (Eunchan Kim)
* [dvsim] Logic to copy repo to scratch area (Srikrishna Iyer)
* [dv/lc_ctrl] enable lc_ctrl alert_test (Cindy Chen)
* [prim] documentation update for flash (Timothy Chen)
* [flash_ctrl] Add additional interface support (Timothy Chen)
* [dvsim] Fix publish report path (Weicai Yang)
* [top_earlgrey] Instantiate LC controller in toplevel (Michael
  Schaffner)
* [doc] Fix checklist items in V1 (Michael Schaffner)
* [dv/csr_excl] Fix VCS warning (Cindy Chen)
* [dv/doc] cleaned up checkist alignment (Rasmus Madsen)
* [doc/dv] cleanup (Rasmus Madsen)
* [dv/doc] updated dv_plan links to new location (Rasmus Madsen)
* [dv/doc] changed testplan to dv_plan in markdown files (Rasmus
  Madsen)
* [dv/doc] changed dv plan to dv doc (Rasmus Madsen)
* Remove redundant ascentlint options (Olof Kindgren)
* Add ascentlint default options for all cores depending on
  lint:common (Olof Kindgren)
* [flash] documentation update (Timothy Chen)
* [flash / top] Add info_sel to flash interface (Timothy Chen)
* [otp] lci interface assertion related fix (Cindy Chen)
* [dv/uvmdvgen] Add switch to auto-gen edn (Cindy Chen)
* [util] Rejig how we load hjson configurations for dvsim.py (Rupert
  Swarbrick)
* added changes required by sriyerg (Dawid Zimonczyk)
* update riviera.hjson (Dawid Zimonczyk)
* [flash_ctrl] Add high endurance region attribute (Timothy Chen)
* Change VerilatorSimCtrl::Exec to handle --help properly (Rupert
  Swarbrick)
* Simplify handling of exit_app in VerilatorSimCtrl::ParseCommandArgs
  (Rupert Swarbrick)
* [sram_ctrl] Rtl lint fix (Michael Schaffner)
* [keymgr] Add edn support (Timothy Chen)
* [dv] Make width conversion explicit in dv_base_env_cfg::initialize
  (Rupert Swarbrick)
* [dvsim] Allow dvsim.py to be run under Make (Rupert Swarbrick)
* [dvsim[ rename revision_string to revision (Srikrishna Iyer)
* [dvsim] Update log messages (Srikrishna Iyer)
* [dvsim] fix for full verbosity (Srikrishna Iyer)
* [dv] Fix Questa warning and remove unused var (Weicai Yang)
* [dvsim] Add alias for --run-only (Weicai Yang)
* [keymgr] Hook-up random compile time constants (Timothy Chen)
* [dvsim] Add support for UVM_FULL over cmd line (Srikrishna Iyer)
* [dv common] Enable DV macros in non-UVM components (Srikrishna Iyer)
* [DVsim] Add support for Verilator (Srikrishna Iyer)
* [DVSim] Fix how sw_images is treated (Srikrishna Iyer)
* [DV common] Fixes in sim.mk for Verilator (Srikrishna Iyer)
* [DV Common] Split DV test status reporting logic (Srikrishna Iyer)
* [prim_arbiter_ppc] Fix lint error (Philipp Wagner)
* [DV common] Factor `sim_tops` out of build_opts (Srikrishna Iyer)
* [dvsim] run yapf to fix style (Weicai Yang)
* [dv/common] VCS UNR flow (Weicai Yang)
* [dv] Add get_max_offset function in dv_base_reg_block (Weicai Yang)
* [otp_ctrl] Fix warnings from VCS (Cindy Chen)
* [lint] Change unused_ waiver (Eunchan Kim)
* [dv/alert_test] Add alert_test IP level automation test (Cindy Chen)
* [DV] Update the was SW is built for DV (Srikrishna Iyer)
* [dvsim] Replace `sw_test` with `sw_images` (Srikrishna Iyer)
* [chip dv] Move sw build directory (Srikrishna Iyer)
* [dv common] Update dv_utils to use str_utils_pkg (Srikrishna Iyer)
* [DVSim] Method to add pre/post build/run steps (Srikrishna Iyer)

Signed-off-by: Philipp Wagner <phw@lowrisc.org>
2021-01-07 18:03:44 +00:00
Fresher14
0199bbae66 Use overlapping implications for Xcelium 19.03
Xcelium 19.03 doesn't support the `->` (binary logical) operator, but
using `|->` (overlapping implication) is equivalent here and supported;
use this operator instead.

Fixes #1213
2020-12-17 11:25:03 +00:00
Philipp Wagner
aa7582b8d4 Use more descriptive issue template names
The GitHub UI shows apparently the name of the template at
https://github.com/lowRISC/ibex/issues/new/choose, which I thought was
just an internal identifier. Use the longer-form version there as well.
2020-12-08 13:59:43 +00:00
Philipp Wagner
e71494fd39 Add issue templates to GitHub project
Add two issue templates to the GitHub project: one for questions, and
one for reporting bugs. These templates are not mandatory, users can
freely change them, or get a blank issue template instead.

To avoid having too much description/example text in the final issue the
instructions are written in HTML comments (which is not beautiful, but
should do the trick and seen commonly in projects).
2020-12-08 12:31:40 +00:00
Tom Roberts
8db89a9dfc [rtl] Add branch prediction signals to icache
These changes correspond to similar changes in the prefetch buffer to
support branch prediction. A registered version of fill_ext_done was
required to prevent a combinational loop from branch_i in to valid_o
out.

Multiplexing priorities for fifo_addr have been swapped to match
fetch_addr_d in the same module and all similar multiplexing in the
icache (prioritize incoming branch_i over branch_mispredict_i). Note
however that it is not expected that these conditions will actually
occur together, and an assertion has been added to check that.

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-12-02 15:10:48 +00:00
Tom Roberts
64ee9a930d [rtl] icache performance updates
Remove the SpeculativeRequest parameter, and replace it with a
policy. If the cache is disabled, make the request on the basis that we
definitely won't hit in the cache and so should make the bus request
asap.

Stop fill buffers from fetching complete cache lines when the cache is
disabled. When the core branches into the middle of a line, the lower
words would normally be fetched to complete the line. This is
unnecessary when the cache is disabled since those words will just be
thrown away and the core will stall while they are being fetched.

These two changes make the performance using the disabled icache the
same as using non-icache prefetch buffer.

Signed-off-by: Tom Roberts <tomroberts@lowrisc.org>
2020-12-02 15:10:48 +00:00
Rupert Swarbrick
38a6b59e0b [fpv] Assume icache req_i input is low when in reset
This avoids spurious requests going out on the instruction bus.
2020-12-02 15:10:48 +00:00
Rupert Swarbrick
afb21c2077 [dv] Make sure the req_i interface is never asserted in reset
Amusingly, there was also actually a bug in the combo sequence logic:
it took seq_idx to be the number of sequences that we'd run so far,
but it is actually an index that chooses which sequence we're about to
run.
2020-12-02 15:10:48 +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
Philipp Wagner
f732bf51a2 CI: Remove outdated workarounds for Ubuntu 16.04 2020-12-01 19:01:29 +00:00