[libre-riscv-dev] [Bug 178] first coriolis2 tutorial, workflow and "test project" page
bugzilla-daemon at libre-riscv.org
bugzilla-daemon at libre-riscv.org
Mon Feb 24 17:21:27 GMT 2020
http://bugs.libre-riscv.org/show_bug.cgi?id=178
--- Comment #92 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
(In reply to Jean-Paul.Chaput from comment #91)
> > basically there's some definite corruption going on from BLIF to VST.
>
> Yes and no (Normand response).
>
> I've found similar problem in sm0, and that is what was causing the lvx
> problem. An output was connected to "one" which is vdd and the
> intermediate cell "one" was not inserted (you cannot directly connect
> vdd to logical signal). I'm about to correct that.
>
> The problem you found is different. It is is the "one internal signal
> for two external connectors". In the blif file, the lines:
>
> .names mask[1] mask[0]
> 1 1
>
> means that mask[0] is an alias of mask[1] (it copies it's truth table).
> So Coriolis *merge* the two signals, leaving only mask[0], hence the
> "hole" in the vector as mask[1] is destroyed.
and on the current version i am looking at, at the moment:
.model sm2
.inputs gates
.outputs mask[0] mask[1] mask[2]
.names $false
.names $true
1
.names $undef
.subckt inv_x1 i=gates nq=mask[2]
.names mask[2] bit0
1 1
.names mask[2] bits
1 1
.names $true mask[0]
1 1
.names $true mask[1]
1 1
.end
and this results in this:
subckt_54_sm1 : sm1
port map ( gates => pmask(2 downto 1)
, mask => sm1_mask(2)
, vdd => sm1_mask(1)
, vss => vss
);
so there are quite a lot of those overwrites
> Would it be possible for this to not happen in the nMigen description?
it's waaay beyond what nmigen is doing: it's what yosys is doing with the ilang
file. i did "read_blif part_sig_add.blif" then "show" and also "write_ilang
part_sig_add2.il" and it's radically different.
basically, the output from yosys is so "optimised" (so much removed and
topologically changed) that even attempting to "stop" nmigen from doing
this, i am overwhelmed even just considering the task.
honestly i suspect that trying the route of modifying nmigen, there would
be so many holes that it would be virtually impossible to cover all of them.
> One dirty fix to keep the interface untouched would be for Coriolis
> to insert a buffer between those two signals, so the become identical
> but different net (and with some delay addes).
if that gets us something "working" so that later it can be fixed /
optimised, *great*.
even if that doesn't happen, honestly i do not feel it is critical
(not unless it increases the overall chip size by more than... 60%
to put a finger-in-air number).
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the libre-riscv-dev
mailing list