[J-core] Fun with nvc.
rob at landley.net
Fri Jun 3 13:35:26 EDT 2016
On 06/02/2016 11:52 PM, D. Jeff Dionne wrote:
> On Jun 3, 2016, at 6:25, Rob Landley <rob at landley.net> wrote:
>> Now that it more or less works (there are a bunch of asserts and
>> the timing is weird, but it passes its internal diagnostics and
>> runs the gdb stub),
> There is one more thing: something causes the CPU to take more cycles.
> This is only slightly weird, it surely has something to do with memory
> access adding wait states. It's an odd bug that would cause that!
>> the next question is how to attach it to
>> yosys? (Again, discussed in the above message, but since Nick's been
>> traveling and Jeff's been busy with other stuff, I'm poking a bit
>> to see what the next steps would be.)
> There are 2 (big picture) issues:
> You need to walk the NVC syntax tree, and translate it into a yosys
> tree. Or, more likely, code a thing to write out a syntax tree from
> nvc, and write a reader for yosys that reads that into yosys internal
> syntax tree.
> The second issue is yosys trees look a little different than an nvc
> tree, with the yosys tree expected to be post elaboration (e.g. Post
> constant folding including evaluation of functions that result in
> constants, application of generics, instantiation of blocks...)
> There is a mismatch between nvc and yosys about the structures.
> If you want constant folding, etc, including things like tables
> of sin() and cos() for DSP applications, or reading a files
> (like rom contents) into constants (which we do use some places),
> then obviously the vhdl code that evaluates these constants
> including file IO must run. For NVC, that means you need the llvm
> generated binary to be executed, no? This is a complication, and
> I don't yet understand enough about how nvc works to do that.
That last part sounds like a question for Nick. :)
>> Alas, I don't have the Lattice board the resulting bitstream
>> would run on.
> Ok, simple :)
>> I should probably try to get the xilinx toolchain
>> to build that source blob for a numato board and see what would
>> be involved in porting the arduino tools to it.
More information about the J-core