-- !!! -- 28 Oct 03 -- This file is deprecated. Use firmwarelog.html from now on. -- !!! -- ZPD firmware log -- Indicate date, who, library, component, and what you did. -- 26 June 2002, sjb -------------------------------------------------- zpd.ff_addr_interp : fixed version number address decoding to not fight with fitter. -- Three changes to add ability to manually reset the FF DCMs: 1. zpd.decoderdriver : drive xbus(0) with selmask(14) to use with resetting DCM in FF. 2. fastcontrol.clk_interp : added reset input to reset DCM. Removed attempt at automatic reset upon losing lock. 3. zpd.finderfitter : drive reset input of clk_interp with xbus(0) -- 27 June 2002, sjb -------------------------------------------------- -- Fixing DCM locking fastcontrol.clk_interp : added auto reset for 16 clocks at wakeup time. zpd.decoderdriver : don't drive xbus(0) with sel_mask(14) zpd.finderfitter : don't reset clk_interp(DCM) with xbus(0) zpd.decisionmodule : updated clk_interp component with grounded external reset. -- 27 June 2002, sjb -------------------------------------------------- -- Clocking in signals which control state machines sergio.sergio_top, zpd.decoderdriver, zpd.finderfinder, zpd.decisionmodule : clock in signals such as run, en_mem_ff, and start_mem so that the state machines get nice clean edges. The .ucf files for the FF and the DM were also changed to add "_in" to several signal names to that the on chip version could retain the same name as before. [committed 28 June 2002] -- 27 June 2002, sjb -------------------------------------------------- -- Misc cleanup sergio.sergio_top : clock cs signals out of address interp block to help with routing. [Not committed indivdually?] zpd.decisionmodule : don't flash config LED upon error. Right now we aren't pulling error low, and we are getting a continuous input sync error, so the error signal is pretty meaningless (always high). This may cause the synthesis tools to trim the error logic here though... -- 3 July 2002, sjb -------------------------------------------------- -- Clocks fastcontrol.clk_output : drive board level clk60's with a DDR rather than simply sending the DD clk60 out an LVDS port. NB: Implemented DD design doesn't seem to work. Probably due to some unrelated error, since even internal access to Sergio, etc. is hosed. Update: need to use clk60_b from DCM rather than inverting clk60. Nathan made changes to fc.clk_input, fc.clk_output, and zpd.decoderdriver to accomplish this. -- 9 July 2002, sjb -------------------------------------------------- fastcontrol.std_registers : new component to handle MIO interface to version, status, and control registers. sergio.sergio_top : added fastcontrol.std_registers. Reorganized interp_addr embedded block. zpd.ff_addr_interp now uses >= and < logic for decoding addresses. More readable. -- 11 July 2002, sjb -------------------------------------------------- Updated zpd.decisionmodule to use fc.std_registers. Updated decisionmodule.addr_interp to interpret addresses 0x0 - 0xF as std. -- 16 July 2002, sjb -------------------------------------------------- fc.std_registers : fixed logic for when to send x"BADDBADD" (prev. never) zpd.ff_addr_interp : replaced mio_ver_en with mio_std_en. zpd.finderfitter : ver3. added fc.std_registers. Fitter clk60 is now tied to clk60 rather than clk120. -- 22 July 2002, sjb -------------------------------------------------- fitter.fitter_top : removed "xxx..." from segphi(0) init. -- 29 July 2002, sjb -------------------------------------------------- Tracking init reset: fc.fastcontrol_top : modified init_rst to use shift register. -- 6 Aug 2002, sjb -------------------------------------------------- sergio.rotate_seg : fixed bit shift from frame bit coming one clock before segment info starts sergio.seg_generate : simulate frame phasing properly testlib.sergio_tb : update interface -- 8 Aug 2002, sjb -------------------------------------------------- Cleanup from init_rst mess: testlib.fc_tb : updated fc component zpd.decoderdriver : cleanup. moved init_rst to this level. harvard_std.init_reset : make fd_struct default view. fc.fastcontrol_top : removed debug port, moved init_rst to higher level -- 8 Aug 2002, sjb -------------------------------------------------- fc.fc_cmd_decode : imported new block read protocol from Su Dong. renamed old view to rtl_apr02.vhd ############################################################ Reference Design 0 2 Dec 02 ############################################################ -- 4 Dec 02, sjb -------------------------------------------------- zpd.finderfitter version number 8 stat(6:4) <= ffnum; configledff <= locked; -- previously '1' -- 6 Dec 02, sjb -------------------------------------------------- finder.finder_top Changed LA settings for debugging -- 9 Dec 02, sjb -------------------------------------------------- sergio.input_dmem run is like a second enable - don't play or record if not running removed output state machine an included more direct VHDL code sergio.sergio_top version 5 send run to input_dmem --> Not yet implemented, tested, or committed -- 11 Dec 02, sjb -------------------------------------------------- modified finderfitter.ucf to correct ffnum(2) from ah10 to aj10. --> Not yet in zpd/finderfitter/finderfitter.ucf modified finderfitter.ucf to limit we to 2 clk60's rather than TIG. --> Didn't work. Commented out fastcontrol.minibus_interp Use multiple drivers for multiple identical write enable (we) signals to help with routing. zpd.finderfitter version 9 use WE bus finderfitter.ucf : moved fit_dmem RAMB down to Y13 instead of Y19 -- ?? Dec 02, sjb -------------------------------------------------- zpd.finderfitter zpd.ff_minibus_interp zpd.ff_addr_interp reorganized hierarchy to be able to constrain all minibus related interpretation into an area constraint. This may or may not be needed... -- 13 Jan 03, sjb -------------------------------------------------- zpd.finderfitter Fitter was updated to output signed and unsigned - update diagram signals from fitter to fit_dmem_top fitter.fit_dmem_top and fitter.fit_reformat Change interface to use signed and unsigned inputs ==> 14 Jan 03 : undid those changes; Nathan reverted fitter interface to use std_logic_vec only. Leo synthesis: make_fitter.tcl Add fitter/lut_block4k_16 finderfitter.ucf Fitter multipliers changed name in synthesis; comment out location constraints for now. -- 14 Jan 03, sjb -------------------------------------------------- finder.finder_top.struct_mem Drive output signals with memory outputs so that when they are connected to the fitter, the fitter logic doesn't get optimized or trimmed away. -- 15 Jan 03, sjb -------------------------------------------------- finder.finder_top finder.seg_input finder.seed_mem finder.rho_tandip_finder finder.seg2prm finder.segpipe finder.close_seg_finder Added valid_seed flag so that PRM won't find tracks for seed segments with mask='0'. zpd.finderfitter Updated version to x"000a" Changed finder_dmem clock from clk120 to clk60. ==> forgot to resynthesize top level after clk change until end of 16 Jan. finder.finder_ctrl finder.close_seg_finder zpd.finderfitter.clk_out Changed latch_trk to be high for 1 clk60 period (still based upon phase(4:0) which is clocked by clk120...). Clock outputs to Fitter with clk60. -- 16 Jan 03, sjb -------------------------------------------------- finder.finder_dmem Added 1, 2, 3, etc. to the high nybble of the segphi output for debugging. --> Removed after confirming that it worked. finder.finder_ctrl Delay reset_csf 3 clock ticks so that best_seg output of CSF is held longer. zpd.finderfitter Version x"000b" -- 17 Jan 03, sjb -------------------------------------------------- finder.close_seg_finder Lots of screwing around with output for debugging... -- 24 Jan 03, sjb -------------------------------------------------- finder.finder_lut_init Updated constants to use rounding instead of truncating. -- 25 Jan 03, sjb -------------------------------------------------- finder.seg_input en <= not reset; to disable input when user reset is high. Used mainly at start of simulation to prevent XXXX confusion. -- 27 Jan 03, sjb -------------------------------------------------- finder.seedphi_lut Expanded the INIT_xx values to cover INIT_20 to INIT_3F for handling seedphi input values >= 512. -- 29 Jan 03, sjb -------------------------------------------------- finder.finder_top finder.close_seg_finder Send no_trk from PRM to CSF. "seg_en <= ... and not no_trk" so that CSF won't try to find closest segments to bin (0,0) when the PRM didn't actually find a track. -- 3 Feb 03, sjb -------------------------------------------------- fastcontrol.clk_interp Corrected phase structure so that using en4 is equivalent to clocking with clk4, if clk4 was actually a clock (it isn't...) fitter.fit_reformat Re-organized code to clock in fitter results and drive the fitter_results bus to the dmem. fitter.fitter_dmem Re-organized state machine to get phasing correct for recording, playing, and driving FR (Fit Results) bus to the Decision Module. -- 4 Feb 03, sjb -------------------------------------------------- zpd.finderfitter Updated version to x"000c" -- 6 Feb 03, sjb -------------------------------------------------- finder.prm_constants Updated constants to not have IP correction in PRM ranges. finder.finder_lut_init New expected phi values are based upon extrapToSuperLayer() rather than the previous somewhat incorrect getSegPhiAtSuperLayer() finder.finder_dmem Synchronize start of recording to frame bit. -- 7 Feb 03, sjb -------------------------------------------------- Several changes to pipelining to get Finder working for segments in all positions, not just position 0: finder.finder_ctrl Move latch_expphi, reset_csf, and latch_trk back by 2 clocks finder.delay_std_logic Add 2 more clock ticks to delay registers finder.close_seg_filter Pipeline segnum along with segs while deciding which sector/segs to use based upon expphi value. -- 10 Feb 03, sjb -------------------------------------------------- Checking in a bunch of changes previously mentioned: fastcontrol.clk_interp : en4 & friends phasing correction fastcontrol.minibus_interp : Drive multiple WE signals sergio.segio_top : WE bus; send RUN to input_dmem sergio.input_dmem : don't record or play if not in RUN mode finder.* : lots of bug fixes close_seg_filter close_seg_finder delay_std_logic finder_ctrl finder_dmem finder_lut_init finder_top mb_generate prm_constants rho_tandip_finder seed_mem seedphi_lut seg2prm seg_input seg_mem -- Unknown change seg_pipe -- Unknown change, probably adding a signal fitter.fit_dmem_top, fit_reformat, fitter_dmem Fix phasing of signals zpd.ff_minibus_interp : Reorganized hierarchy, use we(3:0) instead of we zpd.finderfitter : component interface changes; we(3:0); output clocking -- 11 Feb 03, sjb -------------------------------------------------- finder.prm_constants Updated constants to include +-2 "phi error" (fpe) to cover holes between bins at large tanLambda. -- 18 Feb 03, sjb -------------------------------------------------- fitter.fit_dmem_top, fit_reformat, fitter_dmem Cleaned up phasing for play and record to match clk4 on fit results bus. Required update by Eunil on DM as well... -- ~25 Feb 03, sjb -------------------------------------------------- finder.find_best_seg, close_seg_sl, close_seg_finder, finder_top, finder_config_mem, ff_addr_interp - Added finder_config_mem to hold variable max_phi_diff for road width when looking for close segments finder.megabus_decoder - counter logic max at 31 rather than assume 5 bit wrap around -- 10 Mar 03, sjb -------------------------------------------------- finder.prm_constants Updated with version from Nick's hardware version of software finder -- 18 Mar 03, sjb -------------------------------------------------- zpd.finderfitter Incremented version to 0xe finder.finder_config_mem, close_seg_finder, finder_top: Modified max_phi_diff to be (1:10) for each SL. Default of 0x20. finder.finder_lut_init, prm_constants Updated constants from minor code tweaks. -- 25 Mar 03, sjb -------------------------------------------------- finder.finder_top on down... Many changes to use fully flattened phi segments throughout the design. Avoids problem of projecting non-edge seed segment into an edge region of a smaller SL. zpd.finderfitter incremented version to 0xf. -- 9 Apr 03, sjb -------------------------------------------------- finder.prm_constants Updated SL2 and SL3 from Finder C++ code so that min/max don't exceed +/- two sectors in range. -- 15 Apr 03, sjb -------------------------------------------------- finder.prm_constants Updated PRM constants again to not try to use sectors which aren't sent across the megabus. -- 17 Apr 03, sjb -------------------------------------------------- finder.seg_input, seg_mem Don't output segments to rest of algorithm if they wouldn't be used after a one sector shift. (Same problem as previous; improved solution) -- 22 Apr 03, sjb -------------------------------------------------- zpd.finderfitter finder.finder_top, close_seg_finder fitter.fitter_top, segment_serializer, r_phi_fit_pipeline, r_phi_fit_calc Updated segphiN to be (10 downto 0) instead of (9 downto 0) zpd.finderfitter finder.finder_top fitter.fitter_top Added separate 8-bit Finder and Fitter version numbers -- 24 Apr 03, sjb -------------------------------------------------- zpd.ff_addr_interp fitter.addr_decoder Re-wrote MIO address mapping for Fitter LUTs -- 20 June 03, sjb -------------------------------------------------- zpd.decoderdriver fastcontrol.fastcontrol_top sergio.input_sync sergio.sergio_top sergio.latch_err (new component) Also, add the following lines to your decoderdriver.ucf file: NET "serialbit(0)" LOC = "af2"; NET "serialbit(1)" LOC = "ae2"; NET "serialbit(2)" LOC = "ad2"; NET "serialbit(3)" LOC = "ac2"; These changes add: - Expected TSF mask register at block 1 address 0x10 - Frame error sent to glink sync error bit of CSR 1, latched for 64 events - Other errors sent to glink lock error bit of CSR 1, latched for 64 events - Sergio version number 8 - Upper nybble of sergio version number register (block 1 address 0) is the board serial number -- 22 July 03, sjb -------------------------------------------------- sergio.input_sync Redid tsf_mask bits to be mask[5:0] = TSFx[5:0] and mask[8:6] = TSFy[2:0] sergio.segio_top version 9 zpd.decoderdriver LA output modifications -- 29 July 03, sjb -------------------------------------------------- sergio.sergio_top version 0xa sergio.buffer_interp Update from Eunil with small bug fix fastcontrol.clk_output add zpdi_clk for LA to match clk8_out (which is really clk60) zpd.decoderdriver send zpdi_clk out on LA bits 0 and 1 for Xuedong -- 11 Aug 03, eunil ------------------------------------------------- fastcontrol.fastcontrol_top : daq_format routed out to sergio_top op_daq_ctl : daq related changes sergio.buffer_interp : " circular_buffer : " daq_mem : " dddaq_buf : " rotate : add cellloc/phi fetching single_buf : daq related changes sergio_top : shipping cellloc/phi to daq_mem zpd.decoderdriver : routing daq_format from fastcontrol_top to sergio_top -- 14 Aug 03, sjb -------------------------------------------------- sergio.sergio_top version number 0xb zpd.decoderdriver fastcontrol.clk_ctrl_top, clk_ctrl, clk_input Added logic for adjusting the phase of the dclk -- 28 Aug 03, sjb -------------------------------------------------- fitter version 02 Expanded busses in Fitter Nathan added ipcorr Updated fit_dmem with version that stops on not run when in cont mode Use error as input only Changes to finder to send which sector we're on: - close_seg_finder - finder_top - seg_pipe - finder_dmem (?) -- 10 Sep 03, sjb -------------------------------------------------- sergio.sergio_top version number 0xd fastcontrol.clk_relock - new logic to send reset if lock is lost fastcontrol.clk_input - use clk_relock sergio.input_sync - clock input on falling, then rising edge before logic. -- 30 Sep 03, sjb -------------------------------------------------- fitter.addr_decoder - Fix ipcorr memory access bug zpd.finderfitter - fitter version 3 - TEMP! gnd reset to fitter to isolate user reset problem