1
0
mirror of https://github.com/aolofsson/oh.git synced 2025-01-17 20:02:53 +08:00

683 Commits

Author SHA1 Message Date
Andreas Olofsson
8915fd6dfd Adding environment for chip reference model
- Turns out I had a nasty bug that was masked by using my own RX to loopback the TX. Since the new RX is very benign with a  programmable fifo full flag the timing is quite relaxed.
- The legacy elink for e16 has a strict wait policy. When wait is raised high, you must stop pretty much immediately.
- I struggled with testing this bug on the parallella for 2 days.
- Putting together the test environment uncovered the bug in a couple of hours. F**K, I should know better!!
2015-11-24 01:07:49 -05:00
Andreas Olofsson
a8b6ed1d5a Adding more test vectors for elink 2015-11-24 01:06:52 -05:00
Andreas Olofsson
65708a2be9 Added wait generator for fifo (experimental)
- found it very difficult to get to some of the hard to reach scenarios
- the wait circuit helps generate fifo full
- off by default!
2015-11-24 01:05:04 -05:00
Andreas Olofsson
162cb022f9 Adding pushback circuit to stimulus 2015-11-24 01:04:14 -05:00
Andreas Olofsson
d6499aa918 Use parameter to generate random wait statement
- Needed for multi instantiation
2015-11-24 01:03:04 -05:00
Andreas Olofsson
f873efd163 Turns out we don't have the proper axi slave model to properly test the change in the axi master... 2015-11-18 23:59:55 -05:00
Andreas Olofsson
57702798e5 Changing testbench to reflect real design
- The axi slave can never drive enough reads to saturate the maxi fifo since it's only sending out one read at a time.
- Changing the system so that a raw elink sits in front of stimulus..
2015-11-18 23:52:10 -05:00
Andreas Olofsson
074186bd31 Adding new axi utility lib to sim file + README cleanup 2015-11-18 23:33:08 -05:00
Andreas Olofsson
0e8a706bdf Putting 32bit size check back in to esaxi strobe logic
-Need to get into this again! (don't like this part of code still..)
-One lesson, if you are unsure of something leave the old code in comment...can save a lot of time.
2015-11-18 23:30:11 -05:00
Andreas Olofsson
c8b931efb0 Improving the elink_axi environment
- Turns out there was a bug hidden in the emaxi that can only be found by properly driving a master device with reads. This could not happen in the old environment.
- Note that due to limitations in the esaxi, I had to add the etx_fifo block as an interface (simplest).
- The ESAXI is very limited in that it MUST interface to a fifo with spare entries. (so prog_full). This should be FIXED!
- Minimal test passes, now to try to reproduce the DMA bug..
2015-11-18 23:26:59 -05:00
Andreas Olofsson
86f656022d Adding memcpy mode to transaction generator 2015-11-18 23:26:05 -05:00
Andreas Olofsson
4c6e72491c Adding test for remapping
- Not that useful, but it was part of the debugging process
2015-11-18 23:25:07 -05:00
Andreas Olofsson
1be045a5c9 Adding stub files for axi master and slave
- Got tired of tying off constants, too many useless bugs to debug...
- Easier to to autoinst...
2015-11-18 23:23:31 -05:00
Andreas Olofsson
aff0d82a30 Fixing issue with bit stream write
- Script was exiting before bit stream was written
2015-11-17 22:13:46 -05:00
Andreas Olofsson
23485861f5 Fixing README TOC links
hrefs should be done in all lower case for in documents links
2015-11-17 22:05:14 -05:00
Andreas Olofsson
cd544924d7 Fixing up README file 2015-11-17 22:00:12 -05:00
Andreas Olofsson
2b65282a11 Adding table of contents to README 2015-11-17 21:45:52 -05:00
Andreas Olofsson
1943ce96a2 Adding Vivado pre-requisite commenbt 2015-11-17 17:48:19 -05:00
Andreas Olofsson
bac3d5f887 README cleanup 2015-11-17 17:34:41 -05:00
Andreas Olofsson
144e683c2b Adding elink simulation instructions 2015-11-17 17:11:48 -05:00
Andreas Olofsson
e94acceaa0 Cleaning up random dv env 2015-11-17 17:10:57 -05:00
Andreas Olofsson
673fba168d Fixed burst tail bug
- Clearing the "done" register with tx_burst. Kind of makes sense logically since while we are in burst mode we are not done.
- Still not 100% happy with this circuit, but there arent' a lot of lines of code left...
- But elink now passes 500 random burst transactions!!!
2015-11-17 16:51:19 -05:00
Andreas Olofsson
5698302e05 Random test failure bug fixes
- Adding transaction counter to speed up debugging
- Clearing access signal on wait ("bubble")
- Adding back special propagation when there is a wait after io_wait.
2015-11-17 15:39:43 -05:00
Andreas Olofsson
1cdc384863 Cleaning up logic for new burst mode "bit[2]" 2015-11-17 09:48:29 -05:00
Andreas Olofsson
d14cc0f258 Added missing burst bit for legacy elink...
- This is a pain in the ass and should never have been implemented in the first place!
- Burst information is contained in two places, once in the first byte being transmitted and once by the frame staying high
- This was done because there was a second special bursting mode where data is streamed into the same address, so bit[2] becomes a "command bit".
2015-11-17 09:46:22 -05:00
Andreas Olofsson
ebc55fa0ab Adding random transaction generator
!!found critical bug in design!!
2015-11-16 22:02:44 -05:00
Andreas Olofsson
2f9e2910ac Fixing 64 bit read bug 2015-11-16 22:01:45 -05:00
Andreas Olofsson
3102d6cd44 Adding comments 2015-11-16 09:58:47 -05:00
Andreas Olofsson
51c8ae600d Burst works (really this time!!!)
-Solved a speed path in synchronizing the wait signal, had to use the first edge signal fo the IO and the lclk_div4 for the core logic. It seems that the FPGA has a really hard time mixing clock domains, the routing delay between domains explodes
-Put in some special case logic for edge cases, like when there is a wait coming in from the IO and there is a wait from the IO. In that case, the packet gets sampled by the IO and not by the current logic.
-This needs to be cleaned up eventually, not clean enough but it's good enough for now.
2015-11-16 00:42:34 -05:00
Andreas Olofsson
5197822f53 Fixing burst logic speed path
- The burst signal was going fro lclk_div4 domain straight into the io high speed domain. There is quite a bit of logic on this signal. Instead of starting with false paths or multi cycle paths with firstedge, I changed the pipeline.
2015-11-15 12:26:54 -05:00
Andreas Olofsson
f77938e9b0 Simplifying TX logic!!!!
- The logic was a mess, causing me to go around in circles for days. In the end, by adding a missing sync circuit (duh!) between the fast and slow clock to align the edges and removing a redundant pipeline stage ("double") the nasty logic just fell away. Looks good now.
-Write bursts mostly works and design looks clean.
-one bug left to fix on streams of writes...
2015-11-15 01:35:46 -05:00
Andreas Olofsson
431abcda57 Removing write decode from wait pushback 2015-11-15 01:35:04 -05:00
Andreas Olofsson
df0deabd0f Re-re-fixing the wait on RX
- (fixing a temporary bad commit)
2015-11-15 01:34:20 -05:00
Andreas Olofsson
4b384be602 Fixing edge align circuit
- duh error
- making output positive edge aligned, the negedge nastyness should be maintained within module...
2015-11-14 23:33:48 -05:00
Andreas Olofsson
e70c51670c Adding edge align circuit 2015-11-14 22:41:19 -05:00
Andreas Olofsson
75710f25b7 Simplifying wait logic 2015-11-13 22:47:46 -05:00
Andreas Olofsson
c1beed9a13 Two more wait bugs for burst
- The burst signal needs to be pipelined like everything else (0th order..)
- Don't look at write signal when pushing back wait...WILL GO BACK AND REVISIT THIS ONE LATER.
- Yeah, burst write test now passes!!!!
2015-11-13 17:26:05 -05:00
Andreas Olofsson
52b328c194 Redesign of elink transmitter
- Old design was not workable with bursting and long waits. The wait signal needs to be very carfully handled since it's asynchronous to the clock.
-The TX needs to be stopped quickly so the sync needs to be done at the high speed clock, not at div4 clock
-Since there are synchronizers here, there should be only one point of sync. This is not completely the case still, but I think??? it should be safe by constructiona at this point.
-bursting working at this point for writes!!!!!
2015-11-13 16:31:59 -05:00
Andreas Olofsson
78a72aa428 fixing packet format for remap block 2015-11-13 16:31:29 -05:00
Andreas Olofsson
a335194dea fixing packet reshuffling bug 2015-11-13 16:30:33 -05:00
Andreas Olofsson
f7806821c7 Various wait cleanups in RX
- using rx reset, safer as this stays in reset longer, until the clock has hade time to clean up the rest
2015-11-13 16:28:40 -05:00
Andreas Olofsson
4637f90546 Fixing wait circuit in dut (randome wait gen was removed from top) 2015-11-13 16:27:06 -05:00
Andreas Olofsson
fbcf58d642 Adding description for wait signal
- Also fixing packet description
2015-11-13 16:26:32 -05:00
Andreas Olofsson
75cef84075 Timescale stuff
- Need to look into this again, gotchas here
-
2015-11-13 16:25:38 -05:00
Andreas Olofsson
9dbaeaedcd adding hello world test for elink, always run this first 2015-11-13 16:24:59 -05:00
Andreas Olofsson
c725f5cab6 Fixing memory model for emesh
- Moving random wait generator into module
- Fixing wait circuit
2015-11-13 16:23:30 -05:00
Andreas Olofsson
13c523e80c Fixing wait circuit in emmu
- need to consider read/write
- fixing packet parsing, write bit was moved o [0]
2015-11-13 16:22:23 -05:00
Andreas Olofsson
a44778b8be Putting all ip generator blocks in one repo 2015-11-13 16:21:53 -05:00
Andreas Olofsson
24afa3c9a0 Deleting old files 2015-11-12 11:00:23 -05:00
Andreas Olofsson
3f1296b099 Cleanup 2015-11-12 10:50:05 -05:00