tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow
rvalles_ has joined #symbiflow
rvalles has quit [Ping timeout: 260 seconds]
Degi has quit [Ping timeout: 256 seconds]
Degi has joined #symbiflow
az0re has quit [Remote host closed the connection]
rvalles_ has quit [Read error: Connection reset by peer]
rvalles_ has joined #symbiflow
az0re has joined #symbiflow
az0re has quit [Remote host closed the connection]
<sf-slack4> <timo.callahan> General *Renode* question about monitor commands: Let's say I've set `foo` to a numeric value. How can I do "echo Foo is $foo" and get an output e.g. "Foo is 256"? Renode doesn't like it directly without quotes (`echo Foo is $foo`), and if I try `echo "Foo is $foo"`, I get `Foo is $foo`. I've tried playing with the `string` command but haven't found a way that it helps. My fallback is this: `echo -n
<sf-slack4> "Foo is "` `echo $foo`
OmniMancer has joined #symbiflow
az0re has joined #symbiflow
<tcal> Hmm, that last bit didn't come across the bridge very well. Let me retype it without the code markdown:
<tcal> echo -n "Foo is "
<tcal> echo $foo
citypw has joined #symbiflow
<sf-slack4> <mkurc> @olof.kindgren Hi. So to recap: You are trying to get a design with pre-initialized RAM content into EOS S3 and then read it back, right? Are you doing that with a pure HDL design or with QORC SDK? I'm trying to narrow down where the issue may be.
umarcor has quit [Read error: Connection reset by peer]
umarcor has joined #symbiflow
umarcor|2 has joined #symbiflow
umarcor has quit [Read error: Connection reset by peer]
<sf-slack4> <olof.kindgren> Well, it's something in between. Since I can't load a bitstream directly to the device I need to embed it into a C program
<sf-slack4> <olof.kindgren> But in the later stages I started hacking the _bit.h file directly and just rebuilding the ELF from there
<sf-slack4> <olof.kindgren> But yes, in the end I'm trying to get a design with pre-initialized RAM content into EOS S3 and then read it back
<sf-slack4> <olof.kindgren> My observations is that the 32-bit word I specify in the $readmemh hex file gets split into two 16-bit words by yosys or vpr and get padded with a parity bit
<sf-slack4> <olof.kindgren> And when it's written to memory, first all the lower 16 bits are written and then the upper 16 bits. But it seems like I can only read back the lower 16 bits correctly
<sf-slack4> <mkurc> Ok, I see
<sf-slack4> <olof.kindgren> And since I don't have any good debugging solution, all I can do is to guess the value of a memory address and turn on a LED if it's correct
<sf-slack4> <olof.kindgren> So the process is a bit slow
<sf-slack4> <mkurc> Mhm. I'm thinking about a test that would not require the SoC. Just to narrow down the issue.
<sf-slack4> <olof.kindgren> Wait, there's one more clue
<sf-slack4> <olof.kindgren> The memory contents in both ram.mem and the _bit.h file consist of 1024 32-bit words (of which 18 bits in each words are actually used)
<sf-slack4> <olof.kindgren> So as I said, the lower 16 bits of address 0 correspond to the first word in the memory array
<sf-slack4> <olof.kindgren> But it looks like the upper 16 bits of address 0 is related to word 1023 in the array
<sf-slack4> <olof.kindgren> i.e. the last word
<sf-slack4> <olof.kindgren> It would be very interesting to see if we can find which word that corresponds to the upper 16 bits of address 1 in the RAM
<sf-slack4> <olof.kindgren> I had a theory that the upper half was reversed for some reason so I tried to hack the mem init function to write the top half backwards but that didn't seem to change anything
<sf-slack4> <mkurc> But you are programming both the eFPGA and RAM using the ARM core (i.e. the ARM writes the data) You are not using JTAG to do that?
<sf-slack4> <olof.kindgren> Correct
<sf-slack4> <mkurc> (I'm asking as there is a separate script for initializing RAM via JTAG)
<sf-slack4> <mkurc> ok
<sf-slack4> <olof.kindgren> But that script is for extracting data from ram.mem, right?
titanbiscuit has joined #symbiflow
<sf-slack4> <mkurc> Not exactly. When you have an initialized RAM instanced in Verilog, the content is set as parameters of the RAM cell. Then it goes through VPR and gets written to the output FASM file as a number of "virtual" bitstream features. It is then extracted from there and converted into a series of system bus writes that get executed via JTAG.
<sf-slack4> <mkurc> But that happens only when you program the FPGA via JTAG
<sf-slack4> <olof.kindgren> aha
<sf-slack4> <olof.kindgren> Is that kind of the same thing that happens in the `init_fpga_mem` function in `fpga_loader.c` in qorc-sdk?
<sf-slack4> <mkurc> Indeed, but the data source is different.
<sf-slack4> <olof.kindgren> Ah ok. That's interesting
<sf-slack4> <mkurc> The code that runs on ARM core programs the eFPGA and RAM in the same way
<sf-slack4> <mkurc> but it gets the data from the program memory (like any other constants)
<sf-slack4> <olof.kindgren> By writing to 0x40020000 or something like that?
<sf-slack4> <mkurc> I'd need to double check the address, but yes
<sf-slack4> <olof.kindgren> Yeah, I'm not sure that was the exact address either, but something like that
<sf-slack4> <olof.kindgren> Think RAMFIFO3 was at 0x4001B000
<sf-slack4> <mkurc> mhm
<sf-slack4> <olof.kindgren> Btw, there's a typo (I guess) for the RAMFIFO2 base address in EOSS3-Registers.xlsx
miek has quit [Ping timeout: 246 seconds]
jordigw has quit [Ping timeout: 246 seconds]
asy_ has quit [Ping timeout: 246 seconds]
asy_ has joined #symbiflow
jordigw has joined #symbiflow
miek has joined #symbiflow
<sf-slack4> <mkurc> @olof.kindgren In your HDL design is the RAM inferred by Yosys or instanced explicitly?
<sf-slack4> <olof.kindgren> Inferred
<sf-slack4> <olof.kindgren> I haven't made a minimal test case out of this. I'm using my regular servant design with a small hack to turn on a LED depending on memory contents of a certain address
<sf-slack4> <mkurc> Ok, I see. I'll do some checks to verify that the SymbiFlow part of RAM initialization works as expected.
citypw has quit [Ping timeout: 240 seconds]
OmniMancer has quit [Ping timeout: 256 seconds]
OmniMancer has joined #symbiflow
citypw has joined #symbiflow
citypw has quit [Remote host closed the connection]
citypw has joined #symbiflow
ssb has quit [*.net *.split]
epony has quit [*.net *.split]
ssb has joined #symbiflow
OmniMancer has quit [Quit: Leaving.]
phiren has joined #symbiflow
phire has quit [*.net *.split]
<_whitenotifier-f> [symbiflow-arch-defs] acomodi opened issue #1776: Instability due to small changes to memory initialization - https://git.io/JkcwM
epony has joined #symbiflow
citypw has quit [Ping timeout: 240 seconds]
ayazar1 has joined #symbiflow
ayazar1 has quit [Quit: ayazar1]
<_whitenotifier-f> [symbiflow-examples] mithro opened issue #63: Add Nexys Video examples into the repository - https://git.io/JkcpN
scientes has quit [Ping timeout: 256 seconds]
scientes has joined #symbiflow
scientes has joined #symbiflow
scientes has quit [Changing host]
scientes has quit [Client Quit]
scientes has joined #symbiflow
scientes has joined #symbiflow
scientes has quit [Changing host]
<tpb> Title: Welcome to SKywater-OpenFPGA documentation! Skywater-OpenFPGA Chips 1.0 documentation (at skywater-openfpga.readthedocs.io)
cjearls has joined #symbiflow
sjkelly1 has joined #symbiflow
cjearls_mobile has joined #symbiflow
sorear has quit [Read error: Connection reset by peer]
sorear has joined #symbiflow
cjearls_mobile has quit [Ping timeout: 256 seconds]
alexhw_ has joined #symbiflow
alexhw has quit [Ping timeout: 256 seconds]
rejser has joined #symbiflow
pakesson_ has quit [Ping timeout: 264 seconds]
<_whitenotifier-f> [xc-fasm] HackerFoo opened issue #5: Implement parsing to a bit vector in C++ - https://git.io/JkCZr
<HackerFoo> ctypes is pretty easy to use, for what I need.
<mithro> @HackerFoo This really needs to be a Google Doc
<mithro> @HackerFoo You also haven't enumerated the requirements
<HackerFoo> Okay. I'll write some more in a doc.
cjearls_mobile has joined #symbiflow
cjearls_mobile has quit [Ping timeout: 240 seconds]
<cjearls> I'd like to attempt to compile a design to an ECP5 with a soft core, but I'm not sure if the design will even fit on the ECP5. What's the fastest way to see if a design will fit that requires the least initial configuration?