[J-core] Fun with nvc.
D. Jeff Dionne
Jeff at SE-Instruments.com
Fri Jun 3 00:52:33 EDT 2016
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.
> 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