16 #define TRGCDC_SHORT_NAMES
21 #include "trg/trg/Debug.h"
22 #include "trg/trg/State.h"
23 #include "trg/trg/Channel.h"
24 #include "trg/cdc/TRGCDC.h"
25 #include "trg/cdc/Merger.h"
26 #include "trg/cdc/FrontEnd.h"
27 #include "trg/cdc/Wire.h"
37 TRGCDCMerger::TRGCDCMerger(
const std::string& name,
43 :
TRGBoard(name, systemClock, dataClock, userClockOutput, userClockOutput),
48 userClockInput.
name();
58 return (
"TRGCDCMerger version 0.00");
75 outfile <<
"-- inner type" << endl;
76 string cname =
"TRGCDCMergerInner";
83 outfile <<
"--" << endl;
85 outfile <<
" component " << cname << endl;
87 outfile <<
" end component;" << endl;
89 outfile <<
"--------------------------------------------------------------"
92 outfile <<
"entity " << cname <<
"is" << endl;
94 outfile <<
"end " << cname <<
";" << endl;
96 outfile <<
"architecture Behavioral of " << cname <<
" is" << endl;
97 outfile <<
" -- local" << endl;
99 outfile <<
"begin" << endl;
100 outfile <<
"end Behavioral;" << endl;
110 outfile <<
" port (" << endl;
113 outfile <<
" -- 127.216MHz clock (TRG system clock)" << endl;
114 outfile <<
" clk : in std_logic;" << endl;
117 outfile <<
" -- Coarse timing (counter with 127.216MHz clock)" << endl;
118 outfile <<
" tmc : in std_logic_vector(0 to 7);" << endl;
121 outfile <<
" -- Hit pattern(80 bits for 80 wires)" << endl;
122 outfile <<
" ptn : in std_logic_vector(0 to 80);" << endl;
134 outfile <<
" -- Hit pattern output" << endl;
135 outfile <<
" hit : out std_logic_vector(0 to 80);" << endl;
136 outfile <<
" -- 4 bit fine timing for 16 priority wires" << endl;
137 outfile <<
" pri : out std_logic_vector(0 to 63);" << endl;
138 outfile <<
" -- 2 bit fine timing for the fastest hit in 16 TS" << endl;
139 outfile <<
" fst : out std_logic_vector(0 to 31)" << endl;
140 outfile <<
" );" << endl;
148 std::vector<const TRGCDCFrontEnd*>::push_back(a);
165 for (
unsigned i = 0; i <
_misb->size(); i++)
170 for (
unsigned i = 0; i <
_mosb->size(); i++)
180 const string ni =
name() +
"InputSignalBundle";
199 for (
unsigned s = 0; s < input1->size(); s++) {
203 for (
unsigned s = 0; s < input2->size(); s++) {
210 fedata->
clock(dClock);
211 fedata->
name(
name() +
"@dataClock");
212 _misb->push_back(fedata);
222 const string no =
name() +
"OutSigBundle";
223 if (
type() == innerType) {
228 TCMerger::packerInner);
229 }
else if (
type() == outerType) {
234 TCMerger::packerOuter);
260 TCMerger::packerInner(
const TRGState& input)
299 TRGState s(80 + 16 * 4 + 16 * 4 + 16 + 5 * 4 + 1 * 9 + 3);
302 bool* binput =
new bool[input.size()];
303 input.copy2bool(binput);
304 bool* binside = & binput[0];
305 bool* boutside = & binput[256];
309 const bool*
const hitptn0 = & binside[0];
310 const bool*
const hitptn1 = & boutside[0];
311 s.set(0, 32, hitptn0);
312 s.set(32, 48, hitptn1);
316 bool PTS_out_hit[16];
317 for (
unsigned i = 0; i < 16; i++) {
319 PTS_in_hit[i] = hitptn0[0] || hitptn0[16];
320 PTS_out_hit[i] = hitptn1[0] || hitptn1[1] || hitptn1[16] || hitptn1[17] || hitptn1[32] || hitptn1[33] || hitptn1[34];
322 PTS_in_hit[i] = hitptn0[1] || hitptn0[16] || hitptn0[17];
323 PTS_out_hit[i] = hitptn1[0] || hitptn1[1] || hitptn1[2] || hitptn1[16] || hitptn1[17] || hitptn1[18] || hitptn1[32] || hitptn1[33]
324 || hitptn1[34] || hitptn1[35];
325 }
else if (i == 14) {
326 PTS_in_hit[i] = hitptn0[14] || hitptn0[29] || hitptn0[30];
327 PTS_out_hit[i] = hitptn1[13] || hitptn1[14] || hitptn1[15] || hitptn1[28] || hitptn1[29] || hitptn1[30] || hitptn1[31]
328 || hitptn1[44] || hitptn1[45] || hitptn1[46] || hitptn1[47];
329 }
else if (i == 15) {
330 PTS_in_hit[i] = hitptn0[15] || hitptn0[30] || hitptn0[31];
331 PTS_out_hit[i] = hitptn1[14] || hitptn1[15] || hitptn1[29] || hitptn1[30] || hitptn1[31] || hitptn1[45] || hitptn1[46]
334 PTS_in_hit[i] = hitptn0[i] || hitptn0[i + 15] || hitptn0[i + 16];
335 PTS_out_hit[i] = hitptn1[i - 1] || hitptn1[i] || hitptn1[i + 1] || hitptn1[i + 14] || hitptn1[i + 15] || hitptn1[i + 16]
336 || hitptn1[i + 17] || hitptn1[i + 30] || hitptn1[i + 31] || hitptn1[i + 32] || hitptn1[i + 33] || hitptn1[i + 34];
342 const bool*
const pt[16] = {
343 &binside[33], &binside[38], &binside[43], &binside[48],
344 &binside[53], &binside[58], &binside[63], &binside[68],
345 &binside[73], &binside[78], &binside[83], &binside[88],
346 &binside[93], &binside[98], &binside[103], &binside[108]
349 for (
unsigned i = 0; i < 16; i++) {
355 const bool*
const ftinside[16] = {
356 &binside[128], &binside[133], &binside[138], &binside[143],
357 &binside[148], &binside[153], &binside[158], &binside[163],
358 &binside[168], &binside[173], &binside[178], &binside[183],
359 &binside[188], &binside[193], &binside[198], &binside[203]
361 const bool*
const ftoutside[16] = {
362 &boutside[48], &boutside[53], &boutside[58], &boutside[63],
363 &boutside[68], &boutside[73], &boutside[78], &boutside[83],
364 &boutside[88], &boutside[93], &boutside[98], &boutside[103],
365 &boutside[108], &boutside[113], &boutside[118], &boutside[123]
370 for (
unsigned i = 0; i < 16; i++) {
372 st[0] = TRGState(5, ftinside[i]);
373 st[1] = TRGState(5, ftoutside[i]);
374 if (!PTS_in_hit[i]) st[0].set(5,
true);
375 if (!PTS_out_hit[i]) st[1].set(5,
true);
377 if (PTS_in_hit[i] || PTS_out_hit[i]) {
379 s.set(p, 4, &binside[129 + i * 5]);
381 s.set(p, 4, &boutside[49 + i * 5]);
389 s.set(p, 16, &binside[112]);
395 s.set(p, 4, &binside[209]);
402 s.set(p, 4, &boutside[129]);
408 if (hitptn1[0] || hitptn1[16] || hitptn1[32] || hitptn1[33]) {
409 s.set(p, 4, &boutside[134]);
417 et[0] = TRGState(5, &binside[208]);
418 et[1] = TRGState(5, &boutside[138]);
420 if ((!hitptn1[15]) && (!hitptn1[30]) && (!hitptn1[31]) && (!hitptn1[46]) && (!hitptn1[47])) et[1].set(5,
true);
421 if ((!hitptn0[31])) et[0].set(5,
true);
423 if (hitptn0[31] || hitptn1[15] || hitptn1[30] || hitptn1[31] || hitptn1[46] || hitptn1[47]) {
425 s.set(p, 4, &binside[209]);
427 s.set(p, 4, &boutside[139]);
436 if (hitptn1[31] || hitptn1[47]) {
437 s.set(p, 4, &boutside[144]);
450 unpackerInner(input, s);
463 TCMerger::packerOuter(
const TRGState& input)
506 TRGState s(80 + 16 * 4 + 16 * 4 + 16 + 3 * 4 + 9 + 11);
509 bool* binput =
new bool[input.size()];
510 input.copy2bool(binput);
511 bool* binside = & binput[0];
512 bool* boutside = & binput[256];
516 const bool*
const hitptn0 = & binside[0];
517 const bool*
const hitptn1 = & boutside[0];
518 s.set(0, 48, hitptn0);
519 s.set(48, 32, hitptn1);
522 bool PTS_out_hit[16];
523 for (
unsigned i = 0; i < 16; i++) {
525 PTS_in_hit[i] = hitptn0[0] || hitptn0[1] || hitptn0[16] || hitptn0[32] ;
526 PTS_out_hit[i] = hitptn1[0] || hitptn1[16] || hitptn1[17];
527 }
else if (i == 15) {
528 PTS_in_hit[i] = hitptn0[14] || hitptn0[15] || hitptn0[30] || hitptn0[31] || hitptn0[47] ;
529 PTS_out_hit[i] = hitptn1[14] || hitptn1[15] || hitptn1[30] || hitptn1[31];
531 PTS_in_hit[i] = hitptn0[i - 1] || hitptn0[i] || hitptn0[i + 1] || hitptn0[i + 15] || hitptn0[i + 16] || hitptn0[i + 32];
532 PTS_out_hit[i] = hitptn1[i - 1] || hitptn1[i] || hitptn1[i + 15] || hitptn1[i + 16] || hitptn1[i + 17];
556 const bool dummy[6] = {
false,
false,
false,
false,
false,
true};
557 const TRGState stDummy(6, dummy);
560 for (
unsigned i = 0; i < 16; i++) {
562 if (hitptn0[32 + i]) {
563 s.set(p, 4, &binside[49 + 5 * i]);;
569 s.set(p, 4, &boutside[49]);
571 s.set(208 + i, 1,
true);
577 st[0] = TRGState(5, &boutside[43 + i * 5]);
578 st[1] = TRGState(5, &boutside[48 + i * 5]);
579 if (!hitptn1[i - 1]) st[0].set(5,
true);
580 if (!hitptn1[i]) st[1].set(5,
true);
582 if (hitptn1[i] || hitptn1[i - 1]) {
584 s.set(p, 4, &boutside[49 + i * 5]);
585 s.set(208 + i, 1,
true);
588 s.set(p, 4, &boutside[44 + i * 5]);
623 for (
unsigned i = 0; i < 16; i++) {
625 st[0] = TRGState(5, &binside[128 + i * 5]);
626 st[1] = TRGState(5, &boutside[128 + i * 5]);
628 if (!PTS_in_hit[i]) st[0].set(5,
true);
629 if (!PTS_out_hit[i]) st[1].set(5,
true);
631 if (PTS_in_hit[i] || PTS_out_hit[i]) {
633 s.set(p, 4, &binside[129 + i * 5]);
635 s.set(p, 4, &boutside[129 + i * 5]);
659 s.set(p, 4, &boutside[124]);
662 for (
unsigned i = 0; i < 2; i++) {
665 et[0] = TRGState(5, &binside[208 + i * 5]);
666 et[1] = TRGState(5, &boutside[208 + i * 5]);
669 if (!hitptn0[0]) et[0].set(5,
true);
670 if (!hitptn1[16]) et[1].set(5,
true);
672 if (hitptn0[0] || hitptn1[16]) {
674 s.set(p, 4, &binside[209 + i * 5]);
676 s.set(p, 4, &boutside[209 + i * 5]);
682 if (!hitptn0[15] && !hitptn0[31]) et[0].set(5,
true);
683 if (!hitptn1[15] && !hitptn1[31]) et[1].set(5,
true);
685 if (hitptn0[15] || hitptn0[31] || hitptn1[15] || hitptn1[31]) {
687 s.set(p, 4, &binside[209 + i * 5]);
689 s.set(p, 4, &boutside[209 + i * 5]);
709 unpackerOuter(input, s);
722 TCMerger:: unpackerInner(
const TRGState& input,
723 const TRGState& output)
726 TRGState inputInside = input.subset(0, 256);
727 TRGState inputOutside = input.subset(256, 256);
729 unsigned ipos = 0, o = 0;
731 cout <<
"======================= Merger unpackerInner ================================= " << endl;
732 cout <<
"input bit information: " << endl;
733 for (
unsigned bi = 0; bi < input.size(); bi++) {
734 if (input[bi]) cout <<
"* " ;
736 if ((bi % 16) == 15) cout << endl;
737 if (bi == 255) cout <<
"--------------------------------" << endl;
740 cout <<
"Input bit size = " << input.size() <<
" and Output bit size =" << output.size() << endl << endl;
742 cout <<
"Hit map: " << endl;
743 cout <<
"inputOutside : wire hit pattern" << endl;
745 for (
unsigned i = 0; i < 48; i++) {
746 const unsigned j = 47 - i;
747 if (i && ((i % 8) == 0))
755 cout <<
"inputInside : wire hit pattern" << endl;
757 for (
unsigned i = 0; i < 32; i++) {
758 const unsigned j = 31 - i;
759 if (i && ((i % 8) == 0))
767 cout <<
"-------------------------------------------" << endl;
768 cout <<
"Output : wire hit pattern" << endl;
770 for (
unsigned i = 0; i < 80; i++) {
771 const unsigned j = 79 - i;
774 if (
int(i / 16) % 2) {
783 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-" << endl << endl;
785 cout <<
"Priority cell timing:" << endl;
786 cout <<
"inputOutside : no priority cell timing information" << endl;
787 cout <<
"inputInside : priority cell timing" << endl;
789 for (
unsigned i = 0; i < 16; i++) {
790 TRGState s = inputInside.subset(ipos + i * 5, 5);
793 cout << setw(2) << i <<
": " << s <<
" ";
797 cout <<
"inputInsidepriority cell location flag" << endl;
799 for (
unsigned i = 0; i < 16; i++) {
802 if (inputInside[ipos + i])
803 cout << setw(2) << i <<
": (1)Left ";
805 cout << setw(2) << i <<
": (0)Right ";
810 cout <<
"ouput : priority cell timing" << endl;
812 for (
unsigned i = 0; i < 16; i++) {
813 TRGState s = output.subset(o + i * 4, 4);
816 cout << setw(2) << i <<
": " << s <<
" ";
820 cout <<
"output : priority cell location flag" << endl;
822 for (
unsigned i = 0; i < 16; i++) {
826 cout << setw(2) << i <<
": (1)Left ";
828 cout << setw(2) << i <<
": (0)Right ";
832 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=" << endl << endl;
834 cout <<
"Fastest timing of each TrackSegment: " << endl;
835 cout <<
"inputOutside : fastest timing" << endl;
837 for (
unsigned i = 0; i < 16; i++) {
838 TRGState s = inputOutside.subset(ipos + i * 5, 5);
841 cout << setw(2) << i <<
": " << s <<
" ";
846 cout <<
"inputInside : fastest timing" << endl;
847 for (
unsigned i = 0; i < 16; i++) {
848 TRGState s = inputInside.subset(ipos + i * 5, 5);
851 cout << setw(2) << i <<
": " << s <<
" ";
855 cout <<
"output : fastest timing" << endl;
857 for (
unsigned i = 0; i < 16; i++) {
858 TRGState s = output.subset(o + i * 4, 4);
861 cout << setw(2) << i <<
": " << s <<
" ";
865 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=" << endl << endl;
867 cout <<
"Edge time information: " << endl;
868 cout <<
"inputOutside : timing of missing wires" << endl;
870 for (
unsigned i = 0; i < 4; i++) {
871 TRGState s = inputOutside.subset(ipos + i * 5, 5);
874 cout << setw(2) << i <<
": " << s <<
" ";
879 cout <<
"inputInside : timing of missing wires" << endl;
880 for (
unsigned i = 0; i < 1; i++) {
881 TRGState s = inputInside.subset(ipos + i * 5, 5);
884 cout << setw(2) << i <<
": " << s <<
" ";
888 cout <<
"output : timing of missing wires" << endl;
890 for (
unsigned i = 0; i < 5; i++) {
891 TRGState s = output.subset(o + i * 4, 4);
894 cout << setw(2) << i <<
": " << s <<
" ";
900 cout <<
"================== End of Merger unpackerInner ========================= " << endl;
908 TCMerger:: unpackerOuter(
const TRGState& input,
909 const TRGState& output)
912 TRGState inputInside = input.subset(0, 256);
913 TRGState inputOutside = input.subset(256, 256);
917 cout <<
"======================= Merger unpackerOuter================================== " << endl;
918 cout <<
"input bit information: " << endl;
919 for (
unsigned bi = 0; bi < input.size(); bi++) {
920 if (input[bi]) cout <<
"* " ;
922 if ((bi % 16) == 15) cout << endl;
923 if (bi == 255) cout <<
"--------------------------------" << endl;
926 cout <<
"Input bit size = " << input.size() <<
" and Output bit size =" << output.size() << endl << endl;
928 cout <<
"Hit map: " << endl;
929 cout <<
"inputOutside : wire hit pattern" << endl;
931 for (
unsigned i = 0; i < 48; i++) {
932 const unsigned j = 47 - i;
933 if (i && ((i % 8) == 0))
941 cout <<
"inputInside : wire hit pattern" << endl;
943 for (
unsigned i = 0; i < 48; i++) {
944 const unsigned j = 48 - i - 1;
945 if (i && ((i % 8) == 0))
953 cout <<
"-------------------------------------------" << endl;
954 cout <<
"Output : wire hit pattern" << endl;
956 for (
unsigned i = 0; i < 80; i++) {
957 const unsigned j = 79 - i;
969 if (
int(i / 16) % 2) {
979 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-" << endl << endl;
981 cout <<
"Priority cell timing:" << endl;
982 cout <<
"inputOutside : priority cell timing" << endl;
984 for (
unsigned i = 0; i < 16; i++) {
985 TRGState s = inputOutside.subset(o + i * 5, 5);
988 cout << setw(2) << i <<
": " << s <<
" ";
992 cout <<
"inputInside : priority cell timing" << endl;
993 for (
unsigned i = 0; i < 16; i++) {
994 TRGState s = inputInside.subset(o + i * 5, 5);
997 cout << setw(2) << i <<
": " << s <<
" ";
1001 cout <<
"ouput : priority cell timing" << endl;
1003 for (
unsigned i = 0; i < 16; i++) {
1004 TRGState s = output.subset(o + i * 4, 4);
1007 cout << setw(2) << i <<
": " << s <<
" ";
1011 cout <<
"output : priority cell location flag" << endl;
1013 for (
unsigned i = 0; i < 16; i++) {
1017 cout << setw(2) << i <<
": (1)Left ";
1019 cout << setw(2) << i <<
": (0)Right ";
1023 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=" << endl << endl;
1025 cout <<
"Fastest timing of each TrackSegment: " << endl;
1026 cout <<
"inputOutside : fastest timing" << endl;
1028 for (
unsigned i = 0; i < 16; i++) {
1029 TRGState s = inputOutside.subset(o + i * 5, 5);
1032 cout << setw(2) << i <<
": " << s <<
" ";
1036 cout <<
"inputInside : fastest timing" << endl;
1037 for (
unsigned i = 0; i < 16; i++) {
1038 TRGState s = inputInside.subset(o + i * 5, 5);
1041 cout << setw(2) << i <<
": " << s <<
" ";
1045 cout <<
"output : fastest timing" << endl;
1047 for (
unsigned i = 0; i < 16; i++) {
1048 TRGState s = output.subset(o + i * 4, 4);
1051 cout << setw(2) << i <<
": " << s <<
" ";
1055 cout <<
" -=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=-=+=-=+=-=" << endl << endl;
1057 cout <<
"Edge time information: " << endl;
1058 cout <<
"inputOutside : timing of missing wires" << endl;
1060 for (
unsigned i = 0; i < 2; i++) {
1061 TRGState s = inputOutside.subset(o + i * 5, 5);
1064 cout << setw(2) << i <<
": " << s <<
" ";
1068 cout <<
"inputInside : timing of missing wires" << endl;
1069 for (
unsigned i = 0; i < 2; i++) {
1070 TRGState s = inputInside.subset(o + i * 5, 5);
1073 cout << setw(2) << i <<
": " << s <<
" ";
1077 cout <<
"output : timing of missing wires" << endl;
1079 for (
unsigned i = 0; i < 3; i++) {
1080 TRGState s = output.subset(o + i * 4, 4);
1083 cout << setw(2) << i <<
": " << s <<
" ";
1089 cout <<
"================= End of Merger unpackerOuter ========================= " << endl;
1097 if (
type() == innerType) {
1111 output <<
"Inner Superlayer Merger output dump" << endl << endl;
1114 std::vector<vector<int>> boolvector(changetime.size());
1115 for (
unsigned ch_t = 0; ch_t < changetime.size(); ch_t++) {
1117 for (
unsigned b = 0; b < (* _mosb)[0]->size(); b++) {
1118 boolvector[ch_t].push_back(((*
_mosb)[0]->state(changetime[ch_t])[b]) ? 1 : 0);
1121 output <<
"# of clk: " << changetime[ch_t] <<
" (" << dClock.
absoluteTime(changetime[ch_t]) <<
" ns), signal vector: " << endl;
1123 output <<
"Hitmap: " << endl <<
" ";
1124 for (
int b = 0; b < 80; b++) {
1125 output << boolvector[ch_t][79 - b] <<
" ";
1126 if (b == 15) output << endl;
1127 else if (b == 31) output << endl <<
" ";
1128 else if (b == 47) output << endl ;
1129 else if (b == 63) output << endl <<
" ";
1133 for (
int b = 0; b < 16; b++) {
1134 output <<
"PT#" << b <<
": " << boolvector[ch_t][ 80 + 4 * b + 3 ] << boolvector[ch_t][ 80 + 4 * b + 2 ] << boolvector[ch_t][ 80 + 4
1136 << boolvector[ch_t][ 80 + 4 * b ] << endl;
1140 for (
int b = 0; b < 16; b++) {
1141 output <<
"FT#" << b <<
": " << boolvector[ch_t][ 144 + 4 * b + 3 ] << boolvector[ch_t][ 144 + 4 * b + 2 ] << boolvector[ch_t][ 144
1143 << boolvector[ch_t][ 144 + 4 * b ] << endl;
1146 output <<
"Secondary: " << endl;
1147 for (
int b = 0; b < 16; b++) {
1148 output << boolvector[ch_t][ 223 - b ] ;
1152 output <<
"ET#0(31): " << endl << boolvector[ch_t][227] << boolvector[ch_t][226] << boolvector[ch_t][225] << boolvector[ch_t][224]
1154 output <<
"ET#1(64(out32)): " << endl << boolvector[ch_t][231] << boolvector[ch_t][230] << boolvector[ch_t][229] <<
1155 boolvector[ch_t][228]
1157 output <<
"ET#2(32, 48, 64, 65(outside 0, 16, 32, 33)): " << endl << boolvector[ch_t][235] << boolvector[ch_t][234] <<
1158 boolvector[ch_t][233]
1159 << boolvector[ch_t][232] << endl;
1160 output <<
"ET#3(31, 47, 62, 63, 78, 79(inside 31, outside 15, 30, 31, 46, 47)): " << endl << boolvector[ch_t][239] <<
1161 boolvector[ch_t][238]
1162 << boolvector[ch_t][237] << boolvector[ch_t][236] << endl;
1163 output <<
"ET#4(63, 79(outside 31, 47)): " << endl << boolvector[ch_t][243] << boolvector[ch_t][242] << boolvector[ch_t][241]
1164 << boolvector[ch_t][240] << endl;
1182 output <<
"Outer Superlayer Merger output dump" << endl << endl;
1185 std::vector<vector<int>> boolvector(changetime.size());
1186 for (
unsigned ch_t = 0; ch_t < changetime.size(); ch_t++) {
1188 for (
unsigned b = 0; b < (* _mosb)[0]->size(); b++) {
1189 boolvector[ch_t].push_back(((*
_mosb)[0]->state(changetime[ch_t])[b]) ? 1 : 0);
1192 output <<
"# of clk: " << changetime[ch_t] <<
" (" << dClock.
absoluteTime(changetime[ch_t]) <<
" ns), signal vector: " << endl;
1194 output <<
"Hitmap: " << endl <<
" ";
1195 for (
int b = 0; b < 80; b++) {
1196 output << boolvector[ch_t][79 - b] <<
" ";
1197 if (b == 15) output << endl;
1198 else if (b == 31) output << endl <<
" ";
1199 else if (b == 47) output << endl ;
1200 else if (b == 63) output << endl <<
" ";
1204 for (
int b = 0; b < 16; b++) {
1205 output <<
"PT#" << b <<
": " << boolvector[ch_t][ 80 + 4 * b + 3 ] << boolvector[ch_t][ 80 + 4 * b + 2 ] << boolvector[ch_t][ 80 + 4
1207 << boolvector[ch_t][ 80 + 4 * b ] << endl;
1211 for (
int b = 0; b < 16; b++) {
1212 output <<
"FT#" << b <<
": " << boolvector[ch_t][ 144 + 4 * b + 3 ] << boolvector[ch_t][ 144 + 4 * b + 2 ] << boolvector[ch_t][ 144
1214 << boolvector[ch_t][ 144 + 4 * b ] << endl;
1217 output <<
"Secondary: ";
1218 for (
int b = 0; b < 16; b++) {
1219 output << boolvector[ch_t][ 223 - b ] ;
1223 output <<
"ET#0(63(outside 15)): " << endl << boolvector[ch_t][227] << boolvector[ch_t][226] << boolvector[ch_t][225] <<
1224 boolvector[ch_t][224]
1226 output <<
"ET#1(0,64(inside 0, out 16)): " << endl << boolvector[ch_t][231] << boolvector[ch_t][230] << boolvector[ch_t][229]
1227 << boolvector[ch_t][228] << endl;
1228 output <<
"ET#2(15,31,63,79(inside 15, 31, outside 15, 31)): " << endl << boolvector[ch_t][235] << boolvector[ch_t][234]
1229 << boolvector[ch_t][233] << boolvector[ch_t][232] << endl;