delayline: reorder taps by increasing delays

parent e9cd30b6
......@@ -122,8 +122,6 @@ begin
taps_o => taps
);
-- TODO: reorder bits by increasing delays
cmp_lbc: tdc_lbc
generic map(
g_N => g_RAW_COUNT,
......
......@@ -61,9 +61,10 @@ entity tdc_delayline is
end entity;
architecture rtl of tdc_delayline is
signal unreg_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal reg1_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal taps_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal unreg_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal reg1_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal taps_rev : std_logic_vector(4*g_WIDTH-1 downto 0);
signal taps_rev_sorted : std_logic_vector(4*g_WIDTH-1 downto 0);
function f_bit_reverse(s: std_logic_vector) return std_logic_vector is
variable v_r: std_logic_vector(s'high downto s'low);
......@@ -121,5 +122,16 @@ begin
);
end generate;
taps_o <= f_bit_reverse(taps_rev);
-- sort taps by increasing delays, according to static timing model
cmp_ordertaps: tdc_ordertaps
generic map(
g_WIDTH => g_WIDTH
)
port map(
unsorted_i => taps_rev,
sorted_o => taps_rev_sorted
);
-- sort output with the least delay in the most significant bit
taps_o <= f_bit_reverse(taps_rev_sorted);
end architecture;
-- This file was autogenerated by ordertaps.py
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.tdc_package.all;
entity tdc_ordertaps is
generic(
g_WIDTH: positive
);
port(
unsorted_i : in std_logic_vector(4*g_WIDTH-1 downto 0);
sorted_o : out std_logic_vector(4*g_WIDTH-1 downto 0)
);
end entity;
architecture rtl of tdc_ordertaps is
begin
sorted_o(0) <= unsorted_i(0); -- 0.843 ns
sorted_o(1) <= unsorted_i(1); -- 0.893 ns
sorted_o(2) <= unsorted_i(2); -- 0.894 ns
sorted_o(3) <= unsorted_i(3); -- 0.943 ns
sorted_o(4) <= unsorted_i(4); -- 0.965 ns
sorted_o(5) <= unsorted_i(5); -- 1.021 ns
sorted_o(6) <= unsorted_i(7); -- 1.023 ns
sorted_o(7) <= unsorted_i(6); -- 1.037 ns
sorted_o(8) <= unsorted_i(8); -- 1.046 ns
sorted_o(9) <= unsorted_i(9); -- 1.102 ns
sorted_o(10) <= unsorted_i(11); -- 1.104 ns
sorted_o(11) <= unsorted_i(10); -- 1.118 ns
sorted_o(12) <= unsorted_i(12); -- 1.128 ns
sorted_o(13) <= unsorted_i(13); -- 1.184 ns
sorted_o(14) <= unsorted_i(15); -- 1.186 ns
sorted_o(15) <= unsorted_i(14); -- 1.200 ns
sorted_o(16) <= unsorted_i(16); -- 1.209 ns
sorted_o(17) <= unsorted_i(17); -- 1.265 ns
sorted_o(18) <= unsorted_i(19); -- 1.267 ns
sorted_o(19) <= unsorted_i(18); -- 1.281 ns
sorted_o(20) <= unsorted_i(20); -- 1.290 ns
sorted_o(21) <= unsorted_i(21); -- 1.346 ns
sorted_o(22) <= unsorted_i(23); -- 1.348 ns
sorted_o(23) <= unsorted_i(22); -- 1.362 ns
sorted_o(24) <= unsorted_i(24); -- 1.448 ns
sorted_o(25) <= unsorted_i(25); -- 1.504 ns
sorted_o(26) <= unsorted_i(27); -- 1.506 ns
sorted_o(27) <= unsorted_i(26); -- 1.520 ns
sorted_o(28) <= unsorted_i(28); -- 1.525 ns
sorted_o(29) <= unsorted_i(29); -- 1.581 ns
sorted_o(30) <= unsorted_i(31); -- 1.583 ns
sorted_o(31) <= unsorted_i(30); -- 1.597 ns
sorted_o(32) <= unsorted_i(32); -- 1.602 ns
sorted_o(33) <= unsorted_i(33); -- 1.658 ns
sorted_o(34) <= unsorted_i(35); -- 1.660 ns
sorted_o(35) <= unsorted_i(34); -- 1.674 ns
sorted_o(36) <= unsorted_i(36); -- 1.678 ns
sorted_o(37) <= unsorted_i(37); -- 1.734 ns
sorted_o(38) <= unsorted_i(39); -- 1.736 ns
sorted_o(39) <= unsorted_i(38); -- 1.750 ns
sorted_o(40) <= unsorted_i(40); -- 1.755 ns
sorted_o(41) <= unsorted_i(41); -- 1.811 ns
sorted_o(42) <= unsorted_i(43); -- 1.813 ns
sorted_o(43) <= unsorted_i(42); -- 1.827 ns
sorted_o(44) <= unsorted_i(44); -- 1.832 ns
sorted_o(45) <= unsorted_i(45); -- 1.888 ns
sorted_o(46) <= unsorted_i(47); -- 1.890 ns
sorted_o(47) <= unsorted_i(46); -- 1.904 ns
sorted_o(48) <= unsorted_i(48); -- 1.910 ns
sorted_o(49) <= unsorted_i(49); -- 1.966 ns
sorted_o(50) <= unsorted_i(51); -- 1.968 ns
sorted_o(51) <= unsorted_i(50); -- 1.982 ns
sorted_o(52) <= unsorted_i(52); -- 1.988 ns
sorted_o(53) <= unsorted_i(53); -- 2.044 ns
sorted_o(54) <= unsorted_i(55); -- 2.046 ns
sorted_o(55) <= unsorted_i(54); -- 2.060 ns
sorted_o(56) <= unsorted_i(56); -- 2.095 ns
sorted_o(57) <= unsorted_i(57); -- 2.151 ns
sorted_o(58) <= unsorted_i(59); -- 2.153 ns
sorted_o(59) <= unsorted_i(58); -- 2.167 ns
sorted_o(60) <= unsorted_i(60); -- 2.175 ns
sorted_o(61) <= unsorted_i(61); -- 2.231 ns
sorted_o(62) <= unsorted_i(63); -- 2.233 ns
sorted_o(63) <= unsorted_i(62); -- 2.247 ns
sorted_o(64) <= unsorted_i(64); -- 2.255 ns
sorted_o(65) <= unsorted_i(65); -- 2.311 ns
sorted_o(66) <= unsorted_i(67); -- 2.313 ns
sorted_o(67) <= unsorted_i(66); -- 2.327 ns
sorted_o(68) <= unsorted_i(68); -- 2.335 ns
sorted_o(69) <= unsorted_i(69); -- 2.391 ns
sorted_o(70) <= unsorted_i(71); -- 2.393 ns
sorted_o(71) <= unsorted_i(70); -- 2.407 ns
sorted_o(72) <= unsorted_i(72); -- 2.417 ns
sorted_o(73) <= unsorted_i(73); -- 2.473 ns
sorted_o(74) <= unsorted_i(75); -- 2.475 ns
sorted_o(75) <= unsorted_i(74); -- 2.489 ns
sorted_o(76) <= unsorted_i(76); -- 2.498 ns
sorted_o(77) <= unsorted_i(77); -- 2.554 ns
sorted_o(78) <= unsorted_i(79); -- 2.556 ns
sorted_o(79) <= unsorted_i(78); -- 2.570 ns
sorted_o(80) <= unsorted_i(80); -- 2.580 ns
sorted_o(81) <= unsorted_i(81); -- 2.636 ns
sorted_o(82) <= unsorted_i(83); -- 2.638 ns
sorted_o(83) <= unsorted_i(82); -- 2.652 ns
sorted_o(84) <= unsorted_i(84); -- 2.661 ns
sorted_o(85) <= unsorted_i(85); -- 2.717 ns
sorted_o(86) <= unsorted_i(87); -- 2.719 ns
sorted_o(87) <= unsorted_i(86); -- 2.733 ns
sorted_o(88) <= unsorted_i(88); -- 2.819 ns
sorted_o(89) <= unsorted_i(89); -- 2.875 ns
sorted_o(90) <= unsorted_i(91); -- 2.877 ns
sorted_o(91) <= unsorted_i(90); -- 2.891 ns
sorted_o(92) <= unsorted_i(92); -- 2.896 ns
sorted_o(93) <= unsorted_i(93); -- 2.952 ns
sorted_o(94) <= unsorted_i(95); -- 2.954 ns
sorted_o(95) <= unsorted_i(94); -- 2.968 ns
sorted_o(96) <= unsorted_i(96); -- 2.972 ns
sorted_o(97) <= unsorted_i(97); -- 3.028 ns
sorted_o(98) <= unsorted_i(99); -- 3.030 ns
sorted_o(99) <= unsorted_i(98); -- 3.044 ns
sorted_o(100) <= unsorted_i(100); -- 3.049 ns
sorted_o(101) <= unsorted_i(101); -- 3.105 ns
sorted_o(102) <= unsorted_i(103); -- 3.107 ns
sorted_o(103) <= unsorted_i(102); -- 3.121 ns
sorted_o(104) <= unsorted_i(104); -- 3.125 ns
sorted_o(105) <= unsorted_i(105); -- 3.181 ns
sorted_o(106) <= unsorted_i(107); -- 3.183 ns
sorted_o(107) <= unsorted_i(106); -- 3.197 ns
sorted_o(108) <= unsorted_i(108); -- 3.203 ns
sorted_o(109) <= unsorted_i(109); -- 3.259 ns
sorted_o(110) <= unsorted_i(111); -- 3.261 ns
sorted_o(111) <= unsorted_i(110); -- 3.275 ns
sorted_o(112) <= unsorted_i(112); -- 3.281 ns
sorted_o(113) <= unsorted_i(113); -- 3.337 ns
sorted_o(114) <= unsorted_i(115); -- 3.339 ns
sorted_o(115) <= unsorted_i(114); -- 3.353 ns
sorted_o(116) <= unsorted_i(116); -- 3.359 ns
sorted_o(117) <= unsorted_i(117); -- 3.415 ns
sorted_o(118) <= unsorted_i(119); -- 3.417 ns
sorted_o(119) <= unsorted_i(118); -- 3.431 ns
sorted_o(120) <= unsorted_i(120); -- 3.441 ns
sorted_o(121) <= unsorted_i(121); -- 3.497 ns
sorted_o(122) <= unsorted_i(123); -- 3.499 ns
sorted_o(123) <= unsorted_i(122); -- 3.513 ns
sorted_o(124) <= unsorted_i(124); -- 3.521 ns
sorted_o(125) <= unsorted_i(125); -- 3.577 ns
sorted_o(126) <= unsorted_i(127); -- 3.579 ns
sorted_o(127) <= unsorted_i(126); -- 3.593 ns
sorted_o(128) <= unsorted_i(128); -- 3.601 ns
sorted_o(129) <= unsorted_i(129); -- 3.657 ns
sorted_o(130) <= unsorted_i(131); -- 3.659 ns
sorted_o(131) <= unsorted_i(130); -- 3.673 ns
sorted_o(132) <= unsorted_i(132); -- 3.681 ns
sorted_o(133) <= unsorted_i(133); -- 3.737 ns
sorted_o(134) <= unsorted_i(135); -- 3.739 ns
sorted_o(135) <= unsorted_i(134); -- 3.753 ns
sorted_o(136) <= unsorted_i(136); -- 3.762 ns
sorted_o(137) <= unsorted_i(137); -- 3.818 ns
sorted_o(138) <= unsorted_i(139); -- 3.820 ns
sorted_o(139) <= unsorted_i(138); -- 3.834 ns
sorted_o(140) <= unsorted_i(140); -- 3.844 ns
sorted_o(141) <= unsorted_i(141); -- 3.900 ns
sorted_o(142) <= unsorted_i(143); -- 3.902 ns
sorted_o(143) <= unsorted_i(142); -- 3.916 ns
sorted_o(144) <= unsorted_i(144); -- 3.926 ns
sorted_o(145) <= unsorted_i(145); -- 3.982 ns
sorted_o(146) <= unsorted_i(147); -- 3.984 ns
sorted_o(147) <= unsorted_i(146); -- 3.998 ns
sorted_o(148) <= unsorted_i(148); -- 4.007 ns
sorted_o(149) <= unsorted_i(149); -- 4.063 ns
sorted_o(150) <= unsorted_i(151); -- 4.065 ns
sorted_o(151) <= unsorted_i(150); -- 4.079 ns
sorted_o(152) <= unsorted_i(152); -- 4.165 ns
sorted_o(153) <= unsorted_i(153); -- 4.221 ns
sorted_o(154) <= unsorted_i(155); -- 4.223 ns
sorted_o(155) <= unsorted_i(154); -- 4.237 ns
sorted_o(156) <= unsorted_i(156); -- 4.242 ns
sorted_o(157) <= unsorted_i(157); -- 4.298 ns
sorted_o(158) <= unsorted_i(159); -- 4.300 ns
sorted_o(159) <= unsorted_i(158); -- 4.314 ns
sorted_o(160) <= unsorted_i(160); -- 4.318 ns
sorted_o(161) <= unsorted_i(161); -- 4.374 ns
sorted_o(162) <= unsorted_i(163); -- 4.376 ns
sorted_o(163) <= unsorted_i(162); -- 4.390 ns
sorted_o(164) <= unsorted_i(164); -- 4.394 ns
sorted_o(165) <= unsorted_i(165); -- 4.450 ns
sorted_o(166) <= unsorted_i(167); -- 4.452 ns
sorted_o(167) <= unsorted_i(166); -- 4.466 ns
sorted_o(168) <= unsorted_i(168); -- 4.471 ns
sorted_o(169) <= unsorted_i(169); -- 4.527 ns
sorted_o(170) <= unsorted_i(171); -- 4.529 ns
sorted_o(171) <= unsorted_i(170); -- 4.543 ns
sorted_o(172) <= unsorted_i(172); -- 4.549 ns
sorted_o(173) <= unsorted_i(173); -- 4.605 ns
sorted_o(174) <= unsorted_i(175); -- 4.607 ns
sorted_o(175) <= unsorted_i(174); -- 4.621 ns
sorted_o(176) <= unsorted_i(176); -- 4.627 ns
sorted_o(177) <= unsorted_i(177); -- 4.683 ns
sorted_o(178) <= unsorted_i(179); -- 4.685 ns
sorted_o(179) <= unsorted_i(178); -- 4.699 ns
sorted_o(180) <= unsorted_i(180); -- 4.705 ns
sorted_o(181) <= unsorted_i(184); -- 4.758 ns
sorted_o(182) <= unsorted_i(181); -- 4.761 ns
sorted_o(183) <= unsorted_i(183); -- 4.763 ns
sorted_o(184) <= unsorted_i(182); -- 4.777 ns
sorted_o(185) <= unsorted_i(185); -- 4.814 ns
sorted_o(186) <= unsorted_i(187); -- 4.816 ns
sorted_o(187) <= unsorted_i(186); -- 4.830 ns
sorted_o(188) <= unsorted_i(188); -- 4.838 ns
sorted_o(189) <= unsorted_i(189); -- 4.894 ns
sorted_o(190) <= unsorted_i(191); -- 4.896 ns
sorted_o(191) <= unsorted_i(190); -- 4.910 ns
sorted_o(192) <= unsorted_i(192); -- 4.918 ns
sorted_o(193) <= unsorted_i(193); -- 4.974 ns
sorted_o(194) <= unsorted_i(195); -- 4.976 ns
sorted_o(195) <= unsorted_i(194); -- 4.990 ns
sorted_o(196) <= unsorted_i(196); -- 4.998 ns
sorted_o(197) <= unsorted_i(197); -- 5.054 ns
sorted_o(198) <= unsorted_i(199); -- 5.056 ns
sorted_o(199) <= unsorted_i(198); -- 5.070 ns
sorted_o(200) <= unsorted_i(200); -- 5.079 ns
sorted_o(201) <= unsorted_i(201); -- 5.135 ns
sorted_o(202) <= unsorted_i(203); -- 5.137 ns
sorted_o(203) <= unsorted_i(202); -- 5.151 ns
sorted_o(204) <= unsorted_i(204); -- 5.161 ns
sorted_o(205) <= unsorted_i(205); -- 5.217 ns
sorted_o(206) <= unsorted_i(207); -- 5.219 ns
sorted_o(207) <= unsorted_i(206); -- 5.233 ns
sorted_o(208) <= unsorted_i(208); -- 5.243 ns
sorted_o(209) <= unsorted_i(209); -- 5.299 ns
sorted_o(210) <= unsorted_i(211); -- 5.301 ns
sorted_o(211) <= unsorted_i(210); -- 5.315 ns
sorted_o(212) <= unsorted_i(212); -- 5.324 ns
sorted_o(213) <= unsorted_i(213); -- 5.380 ns
sorted_o(214) <= unsorted_i(215); -- 5.382 ns
sorted_o(215) <= unsorted_i(214); -- 5.396 ns
sorted_o(216) <= unsorted_i(216); -- 5.482 ns
sorted_o(217) <= unsorted_i(217); -- 5.538 ns
sorted_o(218) <= unsorted_i(219); -- 5.540 ns
sorted_o(219) <= unsorted_i(218); -- 5.554 ns
sorted_o(220) <= unsorted_i(220); -- 5.559 ns
sorted_o(221) <= unsorted_i(221); -- 5.615 ns
sorted_o(222) <= unsorted_i(223); -- 5.617 ns
sorted_o(223) <= unsorted_i(222); -- 5.631 ns
sorted_o(224) <= unsorted_i(224); -- 5.635 ns
sorted_o(225) <= unsorted_i(225); -- 5.691 ns
sorted_o(226) <= unsorted_i(227); -- 5.693 ns
sorted_o(227) <= unsorted_i(226); -- 5.707 ns
sorted_o(228) <= unsorted_i(228); -- 5.711 ns
sorted_o(229) <= unsorted_i(229); -- 5.767 ns
sorted_o(230) <= unsorted_i(231); -- 5.769 ns
sorted_o(231) <= unsorted_i(230); -- 5.783 ns
sorted_o(232) <= unsorted_i(232); -- 5.788 ns
sorted_o(233) <= unsorted_i(233); -- 5.844 ns
sorted_o(234) <= unsorted_i(235); -- 5.846 ns
sorted_o(235) <= unsorted_i(234); -- 5.860 ns
sorted_o(236) <= unsorted_i(236); -- 5.866 ns
sorted_o(237) <= unsorted_i(237); -- 5.922 ns
sorted_o(238) <= unsorted_i(239); -- 5.924 ns
sorted_o(239) <= unsorted_i(238); -- 5.938 ns
sorted_o(240) <= unsorted_i(240); -- 5.944 ns
sorted_o(241) <= unsorted_i(241); -- 6.000 ns
sorted_o(242) <= unsorted_i(243); -- 6.002 ns
sorted_o(243) <= unsorted_i(242); -- 6.016 ns
sorted_o(244) <= unsorted_i(244); -- 6.022 ns
sorted_o(245) <= unsorted_i(245); -- 6.078 ns
sorted_o(246) <= unsorted_i(247); -- 6.080 ns
sorted_o(247) <= unsorted_i(246); -- 6.094 ns
sorted_o(248) <= unsorted_i(248); -- 6.206 ns
sorted_o(249) <= unsorted_i(249); -- 6.262 ns
sorted_o(250) <= unsorted_i(251); -- 6.264 ns
sorted_o(251) <= unsorted_i(250); -- 6.278 ns
sorted_o(252) <= unsorted_i(252); -- 6.286 ns
sorted_o(253) <= unsorted_i(253); -- 6.342 ns
sorted_o(254) <= unsorted_i(255); -- 6.344 ns
sorted_o(255) <= unsorted_i(254); -- 6.358 ns
sorted_o(256) <= unsorted_i(256); -- 6.366 ns
sorted_o(257) <= unsorted_i(257); -- 6.422 ns
sorted_o(258) <= unsorted_i(259); -- 6.424 ns
sorted_o(259) <= unsorted_i(258); -- 6.438 ns
sorted_o(260) <= unsorted_i(260); -- 6.446 ns
sorted_o(261) <= unsorted_i(261); -- 6.502 ns
sorted_o(262) <= unsorted_i(263); -- 6.504 ns
sorted_o(263) <= unsorted_i(262); -- 6.518 ns
sorted_o(264) <= unsorted_i(264); -- 6.527 ns
sorted_o(265) <= unsorted_i(265); -- 6.583 ns
sorted_o(266) <= unsorted_i(267); -- 6.585 ns
sorted_o(267) <= unsorted_i(266); -- 6.599 ns
sorted_o(268) <= unsorted_i(268); -- 6.609 ns
sorted_o(269) <= unsorted_i(269); -- 6.665 ns
sorted_o(270) <= unsorted_i(271); -- 6.667 ns
sorted_o(271) <= unsorted_i(270); -- 6.681 ns
sorted_o(272) <= unsorted_i(272); -- 6.691 ns
sorted_o(273) <= unsorted_i(273); -- 6.747 ns
sorted_o(274) <= unsorted_i(275); -- 6.749 ns
sorted_o(275) <= unsorted_i(274); -- 6.763 ns
sorted_o(276) <= unsorted_i(276); -- 6.772 ns
sorted_o(277) <= unsorted_i(277); -- 6.828 ns
sorted_o(278) <= unsorted_i(279); -- 6.830 ns
sorted_o(279) <= unsorted_i(278); -- 6.844 ns
sorted_o(280) <= unsorted_i(280); -- 6.930 ns
sorted_o(281) <= unsorted_i(281); -- 6.986 ns
sorted_o(282) <= unsorted_i(283); -- 6.988 ns
sorted_o(283) <= unsorted_i(282); -- 7.002 ns
sorted_o(284) <= unsorted_i(284); -- 7.007 ns
sorted_o(285) <= unsorted_i(285); -- 7.063 ns
sorted_o(286) <= unsorted_i(287); -- 7.065 ns
sorted_o(287) <= unsorted_i(286); -- 7.079 ns
sorted_o(288) <= unsorted_i(288); -- 7.083 ns
sorted_o(289) <= unsorted_i(289); -- 7.139 ns
sorted_o(290) <= unsorted_i(291); -- 7.141 ns
sorted_o(291) <= unsorted_i(290); -- 7.155 ns
sorted_o(292) <= unsorted_i(292); -- 7.159 ns
sorted_o(293) <= unsorted_i(293); -- 7.215 ns
sorted_o(294) <= unsorted_i(295); -- 7.217 ns
sorted_o(295) <= unsorted_i(294); -- 7.231 ns
sorted_o(296) <= unsorted_i(296); -- 7.236 ns
sorted_o(297) <= unsorted_i(297); -- 7.292 ns
sorted_o(298) <= unsorted_i(299); -- 7.294 ns
sorted_o(299) <= unsorted_i(298); -- 7.308 ns
sorted_o(300) <= unsorted_i(300); -- 7.314 ns
sorted_o(301) <= unsorted_i(301); -- 7.370 ns
sorted_o(302) <= unsorted_i(303); -- 7.372 ns
sorted_o(303) <= unsorted_i(302); -- 7.386 ns
sorted_o(304) <= unsorted_i(304); -- 7.392 ns
sorted_o(305) <= unsorted_i(305); -- 7.448 ns
sorted_o(306) <= unsorted_i(307); -- 7.450 ns
sorted_o(307) <= unsorted_i(306); -- 7.464 ns
sorted_o(308) <= unsorted_i(308); -- 7.470 ns
sorted_o(309) <= unsorted_i(309); -- 7.526 ns
sorted_o(310) <= unsorted_i(311); -- 7.528 ns
sorted_o(311) <= unsorted_i(310); -- 7.542 ns
sorted_o(312) <= unsorted_i(312); -- 7.575 ns
sorted_o(313) <= unsorted_i(313); -- 7.631 ns
sorted_o(314) <= unsorted_i(315); -- 7.633 ns
sorted_o(315) <= unsorted_i(314); -- 7.647 ns
sorted_o(316) <= unsorted_i(316); -- 7.655 ns
sorted_o(317) <= unsorted_i(317); -- 7.711 ns
sorted_o(318) <= unsorted_i(319); -- 7.713 ns
sorted_o(319) <= unsorted_i(318); -- 7.727 ns
sorted_o(320) <= unsorted_i(320); -- 7.735 ns
sorted_o(321) <= unsorted_i(321); -- 7.791 ns
sorted_o(322) <= unsorted_i(323); -- 7.793 ns
sorted_o(323) <= unsorted_i(322); -- 7.807 ns
sorted_o(324) <= unsorted_i(324); -- 7.815 ns
sorted_o(325) <= unsorted_i(325); -- 7.871 ns
sorted_o(326) <= unsorted_i(327); -- 7.873 ns
sorted_o(327) <= unsorted_i(326); -- 7.887 ns
sorted_o(328) <= unsorted_i(328); -- 7.896 ns
sorted_o(329) <= unsorted_i(329); -- 7.952 ns
sorted_o(330) <= unsorted_i(331); -- 7.954 ns
sorted_o(331) <= unsorted_i(330); -- 7.968 ns
sorted_o(332) <= unsorted_i(332); -- 7.978 ns
sorted_o(333) <= unsorted_i(333); -- 8.034 ns
sorted_o(334) <= unsorted_i(335); -- 8.036 ns
sorted_o(335) <= unsorted_i(334); -- 8.050 ns
sorted_o(336) <= unsorted_i(336); -- 8.060 ns
sorted_o(337) <= unsorted_i(337); -- 8.116 ns
sorted_o(338) <= unsorted_i(339); -- 8.118 ns
sorted_o(339) <= unsorted_i(338); -- 8.132 ns
sorted_o(340) <= unsorted_i(340); -- 8.141 ns
sorted_o(341) <= unsorted_i(341); -- 8.197 ns
sorted_o(342) <= unsorted_i(343); -- 8.199 ns
sorted_o(343) <= unsorted_i(342); -- 8.213 ns
sorted_o(344) <= unsorted_i(344); -- 8.299 ns
sorted_o(345) <= unsorted_i(345); -- 8.355 ns
sorted_o(346) <= unsorted_i(347); -- 8.357 ns
sorted_o(347) <= unsorted_i(346); -- 8.371 ns
sorted_o(348) <= unsorted_i(348); -- 8.376 ns
sorted_o(349) <= unsorted_i(349); -- 8.432 ns
sorted_o(350) <= unsorted_i(351); -- 8.434 ns
sorted_o(351) <= unsorted_i(350); -- 8.448 ns
sorted_o(352) <= unsorted_i(352); -- 8.452 ns
sorted_o(353) <= unsorted_i(353); -- 8.508 ns
sorted_o(354) <= unsorted_i(355); -- 8.510 ns
sorted_o(355) <= unsorted_i(354); -- 8.524 ns
sorted_o(356) <= unsorted_i(356); -- 8.528 ns
sorted_o(357) <= unsorted_i(357); -- 8.584 ns
sorted_o(358) <= unsorted_i(359); -- 8.586 ns
sorted_o(359) <= unsorted_i(358); -- 8.600 ns
sorted_o(360) <= unsorted_i(360); -- 8.605 ns
sorted_o(361) <= unsorted_i(361); -- 8.661 ns
sorted_o(362) <= unsorted_i(363); -- 8.663 ns
sorted_o(363) <= unsorted_i(362); -- 8.677 ns
sorted_o(364) <= unsorted_i(364); -- 8.683 ns
sorted_o(365) <= unsorted_i(365); -- 8.739 ns
sorted_o(366) <= unsorted_i(367); -- 8.741 ns
sorted_o(367) <= unsorted_i(366); -- 8.755 ns
sorted_o(368) <= unsorted_i(368); -- 8.761 ns
sorted_o(369) <= unsorted_i(369); -- 8.817 ns
sorted_o(370) <= unsorted_i(371); -- 8.819 ns
sorted_o(371) <= unsorted_i(370); -- 8.833 ns
sorted_o(372) <= unsorted_i(372); -- 8.839 ns
sorted_o(373) <= unsorted_i(373); -- 8.895 ns
sorted_o(374) <= unsorted_i(375); -- 8.897 ns
sorted_o(375) <= unsorted_i(374); -- 8.911 ns
sorted_o(376) <= unsorted_i(376); -- 8.931 ns
sorted_o(377) <= unsorted_i(377); -- 8.987 ns
sorted_o(378) <= unsorted_i(379); -- 8.989 ns
sorted_o(379) <= unsorted_i(378); -- 9.003 ns
sorted_o(380) <= unsorted_i(380); -- 9.010 ns
sorted_o(381) <= unsorted_i(381); -- 9.066 ns
sorted_o(382) <= unsorted_i(383); -- 9.068 ns
sorted_o(383) <= unsorted_i(382); -- 9.082 ns
sorted_o(384) <= unsorted_i(384); -- 9.090 ns
sorted_o(385) <= unsorted_i(385); -- 9.146 ns
sorted_o(386) <= unsorted_i(387); -- 9.148 ns
sorted_o(387) <= unsorted_i(386); -- 9.162 ns
sorted_o(388) <= unsorted_i(388); -- 9.171 ns
sorted_o(389) <= unsorted_i(389); -- 9.227 ns
sorted_o(390) <= unsorted_i(391); -- 9.229 ns
sorted_o(391) <= unsorted_i(390); -- 9.243 ns
sorted_o(392) <= unsorted_i(392); -- 9.252 ns
sorted_o(393) <= unsorted_i(393); -- 9.308 ns
sorted_o(394) <= unsorted_i(395); -- 9.310 ns
sorted_o(395) <= unsorted_i(394); -- 9.324 ns
sorted_o(396) <= unsorted_i(396); -- 9.334 ns
sorted_o(397) <= unsorted_i(397); -- 9.390 ns
sorted_o(398) <= unsorted_i(399); -- 9.392 ns
sorted_o(399) <= unsorted_i(398); -- 9.406 ns
sorted_o(400) <= unsorted_i(400); -- 9.415 ns
sorted_o(401) <= unsorted_i(401); -- 9.471 ns
sorted_o(402) <= unsorted_i(403); -- 9.473 ns
sorted_o(403) <= unsorted_i(402); -- 9.487 ns
sorted_o(404) <= unsorted_i(404); -- 9.497 ns
sorted_o(405) <= unsorted_i(405); -- 9.553 ns
sorted_o(406) <= unsorted_i(407); -- 9.555 ns
sorted_o(407) <= unsorted_i(406); -- 9.569 ns
sorted_o(408) <= unsorted_i(408); -- 9.655 ns
sorted_o(409) <= unsorted_i(409); -- 9.711 ns
sorted_o(410) <= unsorted_i(411); -- 9.713 ns
sorted_o(411) <= unsorted_i(410); -- 9.727 ns
sorted_o(412) <= unsorted_i(412); -- 9.731 ns
sorted_o(413) <= unsorted_i(413); -- 9.787 ns
sorted_o(414) <= unsorted_i(415); -- 9.789 ns
sorted_o(415) <= unsorted_i(414); -- 9.803 ns
sorted_o(416) <= unsorted_i(416); -- 9.808 ns
sorted_o(417) <= unsorted_i(417); -- 9.864 ns
sorted_o(418) <= unsorted_i(419); -- 9.866 ns
sorted_o(419) <= unsorted_i(418); -- 9.880 ns
sorted_o(420) <= unsorted_i(420); -- 9.884 ns
sorted_o(421) <= unsorted_i(421); -- 9.940 ns
sorted_o(422) <= unsorted_i(423); -- 9.942 ns
sorted_o(423) <= unsorted_i(422); -- 9.956 ns
sorted_o(424) <= unsorted_i(424); -- 9.961 ns
sorted_o(425) <= unsorted_i(425); -- 10.017 ns
sorted_o(426) <= unsorted_i(427); -- 10.019 ns
sorted_o(427) <= unsorted_i(426); -- 10.033 ns
sorted_o(428) <= unsorted_i(428); -- 10.038 ns
sorted_o(429) <= unsorted_i(429); -- 10.094 ns
sorted_o(430) <= unsorted_i(431); -- 10.096 ns
sorted_o(431) <= unsorted_i(430); -- 10.110 ns
sorted_o(432) <= unsorted_i(432); -- 10.116 ns
sorted_o(433) <= unsorted_i(433); -- 10.172 ns
sorted_o(434) <= unsorted_i(435); -- 10.174 ns
sorted_o(435) <= unsorted_i(434); -- 10.188 ns
sorted_o(436) <= unsorted_i(436); -- 10.195 ns
sorted_o(437) <= unsorted_i(440); -- 10.246 ns
sorted_o(438) <= unsorted_i(437); -- 10.251 ns
sorted_o(439) <= unsorted_i(439); -- 10.253 ns
sorted_o(440) <= unsorted_i(438); -- 10.267 ns
sorted_o(441) <= unsorted_i(441); -- 10.302 ns
sorted_o(442) <= unsorted_i(443); -- 10.304 ns
sorted_o(443) <= unsorted_i(442); -- 10.318 ns
sorted_o(444) <= unsorted_i(444); -- 10.325 ns
sorted_o(445) <= unsorted_i(445); -- 10.381 ns
sorted_o(446) <= unsorted_i(447); -- 10.383 ns
sorted_o(447) <= unsorted_i(446); -- 10.397 ns
sorted_o(448) <= unsorted_i(448); -- 10.405 ns
sorted_o(449) <= unsorted_i(449); -- 10.461 ns
sorted_o(450) <= unsorted_i(451); -- 10.463 ns
sorted_o(451) <= unsorted_i(450); -- 10.477 ns
sorted_o(452) <= unsorted_i(452); -- 10.486 ns
sorted_o(453) <= unsorted_i(453); -- 10.542 ns
sorted_o(454) <= unsorted_i(455); -- 10.544 ns
sorted_o(455) <= unsorted_i(454); -- 10.558 ns
sorted_o(456) <= unsorted_i(456); -- 10.567 ns
sorted_o(457) <= unsorted_i(457); -- 10.623 ns
sorted_o(458) <= unsorted_i(459); -- 10.625 ns
sorted_o(459) <= unsorted_i(458); -- 10.639 ns
sorted_o(460) <= unsorted_i(460); -- 10.649 ns
sorted_o(461) <= unsorted_i(461); -- 10.705 ns
sorted_o(462) <= unsorted_i(463); -- 10.707 ns
sorted_o(463) <= unsorted_i(462); -- 10.721 ns
sorted_o(464) <= unsorted_i(464); -- 10.731 ns
sorted_o(465) <= unsorted_i(465); -- 10.787 ns
sorted_o(466) <= unsorted_i(467); -- 10.789 ns
sorted_o(467) <= unsorted_i(466); -- 10.803 ns
sorted_o(468) <= unsorted_i(468); -- 10.812 ns
sorted_o(469) <= unsorted_i(469); -- 10.868 ns
sorted_o(470) <= unsorted_i(471); -- 10.870 ns
sorted_o(471) <= unsorted_i(470); -- 10.884 ns
sorted_o(472) <= unsorted_i(472); -- 10.970 ns
sorted_o(473) <= unsorted_i(473); -- 11.026 ns
sorted_o(474) <= unsorted_i(475); -- 11.028 ns
sorted_o(475) <= unsorted_i(474); -- 11.042 ns
sorted_o(476) <= unsorted_i(476); -- 11.047 ns
sorted_o(477) <= unsorted_i(477); -- 11.103 ns
sorted_o(478) <= unsorted_i(479); -- 11.105 ns
sorted_o(479) <= unsorted_i(478); -- 11.119 ns
sorted_o(480) <= unsorted_i(480); -- 11.123 ns
sorted_o(481) <= unsorted_i(481); -- 11.179 ns
sorted_o(482) <= unsorted_i(483); -- 11.181 ns
sorted_o(483) <= unsorted_i(482); -- 11.195 ns
sorted_o(484) <= unsorted_i(484); -- 11.199 ns
sorted_o(485) <= unsorted_i(485); -- 11.255 ns
sorted_o(486) <= unsorted_i(487); -- 11.257 ns
sorted_o(487) <= unsorted_i(486); -- 11.271 ns
sorted_o(488) <= unsorted_i(488); -- 11.276 ns
sorted_o(489) <= unsorted_i(489); -- 11.332 ns
sorted_o(490) <= unsorted_i(491); -- 11.334 ns
sorted_o(491) <= unsorted_i(490); -- 11.348 ns
sorted_o(492) <= unsorted_i(492); -- 11.354 ns
sorted_o(493) <= unsorted_i(493); -- 11.410 ns
sorted_o(494) <= unsorted_i(495); -- 11.412 ns
sorted_o(495) <= unsorted_i(494); -- 11.426 ns
end architecture;
......@@ -333,8 +333,8 @@ end component;
component tdc_lbc is
generic(
g_N : positive;
g_NIN: positive
g_N : positive;
g_NIN : positive
);
port(
clk_i : in std_logic;
......@@ -347,7 +347,7 @@ end component;
component tdc_delayline is
generic(
g_WIDTH : positive
g_WIDTH: positive
);
port(
clk_i : in std_logic;
......@@ -357,6 +357,16 @@ component tdc_delayline is
);
end component;
component tdc_ordertaps is
generic(
g_WIDTH: positive
);
port(
unsorted_i : in std_logic_vector(4*g_WIDTH-1 downto 0);
sorted_o : out std_logic_vector(4*g_WIDTH-1 downto 0)
);
end component;
component tdc_divider is
generic(
g_WIDTH: positive
......
#!/usr/bin/python
# This program creates a VHDL entity that sorts the taps of the delay line
# by increasing delays, according to the Xilinx static timing model.
#
# 1. Create a design in ISE with the delay line only, for the targeted FPGA.
# If you run out of I/Os, connect some dummy logic to the taps to prevent
# optimizations. Use this Verilog source for example:
#module top(
# input clk_i,
# input reset_i,
# input signal_i,
# output xtap
#);
#
#wire [124*4-1:0] taps;
#
#tdc_delayline #(
# .g_WIDTH(124)
#) dl (
# .clk_i(clk_i),
# .reset_i(reset_i),
# .signal_i(signal_i),
# .taps_o(taps)
#);
#
#assign xtap = |taps;
#
#endmodule
# 2. Apply this UCF constraint:
# NET "signal_i" OFFSET=IN 20 ns BEFORE "clk_i";
# 3. Implement the design.
# 4. Generate the XML timing report (.twx): trce -v 1000 top.ncd
# 5. Process it with this program.
from xml.etree.ElementTree import ElementTree
import re
filename = "top.twx"
ucftime = 20.0
delays = []
tree = ElementTree()
tree.parse(filename)
paths = tree.findall("twBody/twVerboseRpt/twConst/twPathRpt")
for path in paths:
dest = path.find("twConstOffIn/twDest").text
slack = path.find("twConstOffIn/twSlack").text
destn = int(re.split("\[|\]", dest)[1])
time = ucftime - float(slack)
delays.append((destn, time))
sdelays = sorted(delays, key=lambda dd: dd[1])
print """
-- This file was autogenerated by ordertaps.py
library ieee;
use ieee.std_logic_1164.all;
library work;
use work.tdc_package.all;
entity tdc_ordertaps is
generic(
g_WIDTH: positive
);
port(
unsorted_i : in std_logic_vector(4*g_WIDTH-1 downto 0);
sorted_o : out std_logic_vector(4*g_WIDTH-1 downto 0)
);
end entity;
architecture rtl of tdc_ordertaps is
begin
"""
i = 0
for tap in sdelays:
print " sorted_o(%d) <= unsorted_i(%d); -- %.3f ns" % (i, tap[0], tap[1])
i = i + 1
print """
end architecture;
"""
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment