Tuesday, 2020-10-06

lkclmePy2[m]: what we're doing is... well... "slightly cheating".  we're pretty much blind-copy-paste using microwatt, translating it to nmigen :)12:15
lkclthe difference is that we will be using out-of-order "precise exceptions" rather than "stalls" as shown in that article12:16
lkcl(this comes later btw)12:16
lkclthe way that precise exceptions work, you have to first understand and appreciate the "obvious" fact that once you've written a result to memory or to a regfile, it's not like you can "undo" that12:17
lkclalthough some out-of-order systems do actually do that!  they have a "rollback" mechanism where they take regular snapshots of the entire state (!!)12:18
lkclthe way that the 6600 "precise" system works is: anything that can cause "damage" is held off by a simple flag called a "shadow" bit.12:19
lkclthis does nothing more complex than stop the pipeline from writing (to memory or regfile)12:19
lkclso the result just sits there waiting in an output buffer.12:19
lkclthe important bit is: everything AFTER that "held" instruction is ALSO "shadowed" (hence the term "shadow")12:20
lkclthe problem with exceptions is: you get half-way through calculating the result, and other instructions were issued after it (also not yet completed) and you find "argh actually we can't complete this, must throw an exception"12:21
lkclall you do is:12:21
lkclpull the "go die" flag on all the "shadowed" instructions, they IMMEDIATELY stop (die), and in that very same cycle you can push the "exception" into the instruction queue just like it says in that article12:23
lkclnot "wait for some stalling to occur to flush out the pipeline"12:23
lkclexecute RIGHT NOW the exception, because all the downstream (incomplete, shadowed) instructions were IMMEDIATELY pulled from all pipelines.12:24
lkclmePy2[m], https://git.libre-soc.org/?p=soc.git;a=commitdiff;h=3df06e5cc2009b5918db8eee43785d1fc1f1586616:08
lkclnote the comment16:08
DaKnigwhats the status of the project? how close are you to printing the ASIC?16:09
lkclbusy! :)  we're under a conditional code-freeze ("if we can get L1 caches working they go in")16:09
lkclbecause it's a compelling use-case / test-case for Staf, for him to test the libre-licensed SRAM memory cell he's creating16:10
lkclJTAG "boundary scan" for pinouts is done.  that's with Staf's C4M JTAG library (very cool, well-written, well tested)16:11
lkclneeds a unit test though16:11
lkclwe've a hard (fixed) deadline for the GDS-II file of Dec 2nd16:14
lkclso i have to be quite strict about what goes in16:14
lkclthe final month (all of November, basically) will be nothingggg but testing of the coriolis2 layout16:14
DaKnigwhat's the GDS-II file? (sorry, totally unrelated)16:15
lkclstandard file-format for ASIC layout tools.16:15
DaKnigI see16:16
lkclthe size of files as they go through different processing is hilarious.  it's literally an order of magnitude each time16:17
lkclwe start with 50,000 lines of HDL16:17
lkclthat becomes 10 megabytes of yosys ILANG16:17
lkclwhich becomes 100 megabytes of coriolis2 .ap files16:17
lkclwhich becomes a GIGABYTES of GDS-II file (!!)16:18
lkclmmmmental :)16:18
DaKnigare they easily compressible though?16:18
lkclyeah, they're pretty repetitive16:18
lkcland text-based (ASCII) format16:19
*** DaKnig <DaKnig!~pi@unaffiliated/daknig> has left #libre-soc17:29

Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!