// THE Card "Seed" MSA FPGA User Constraint File (good for FM and not FM) // MSU HEP 23 October 1996 // Last edit 26 November 1997 setup for FIRC FM MSA #4 // Last edit 1 December 1997 set MSA pins for FM MSA #4 // Last edit 1 December 1997 add timing constraints // Last edit 6 December 1997 constrain Quad_Done // Last edit 20 December 1997 must move Quad Done to 37 ns for Frame Enb Blk // -------------------------------------------------------------------------- // Timing Constraints // -------------------------------------------------------------------------- // The ADC Data Path through this card is ASYNCHRONOUS, // from MSA_Input_PAD(63:0) to MSA_Output_PAD(15:0). // Allow 40 ns for this path. TIMEGRP Input_Pads = PADS ( MSA_Input_PAD* ) ; TIMEGRP Output_Pads = PADS ( MSA_Output_PAD* ) ; TIMESPEC TS_MSA_In_to_MSA_Out = FROM Input_Pads TO Output_Pads 40 ns ; // In the Line Enable Control Block the All_Converting signal // goes through a number of steps in a pipeline. // Make sure that all of the steps can run fast enough. NET "Quad_Done" TNM = QD_Clock ; TIMESPEC TS_QD_Clock = PERIOD QD_Clock 37.0 ns ; // In the Mux_ctrl_Pixel_Clock Block the 16_Mhz_Clk signal // goes through a number of steps in a pipeline. // Make sure that all of the steps can run fast enough. NET "16_Mhz_Clk" TNM = 16MHz_Clock ; TIMESPEC TS_16MHz_Clock = PERIOD 16MHz_Clock 26.0 ns ; // -------------------------------------------------------------------------- // Special Characteristics Constraints // -------------------------------------------------------------------------- // -------------------------------------------------------------------------- // Pinout Constraints // -------------------------------------------------------------------------- // Note: It is necessary to comment out certain lines to use this file // in the FM, and to comment out other lines to use this file in // non-FM cards. See comments at end of lines. // On-Card Bus and Timing Signals: DO NOT MODIFY (except FM/not FM changes) // note: OCB_Reg_Addr_PAD(8) present only on FM but not used on any card NET "OCB_Chip_Sel_PAD*" LOC = "P142" ; NET "OCB_Write_Strobe_PAD*" LOC = "P183" ; NET "OCB_Direction_PAD" LOC = "P136" ; NET "OCB_Reg_Addr_PAD(0)" LOC = "P169" ; NET "OCB_Reg_Addr_PAD(1)" LOC = "P168" ; NET "OCB_Reg_Addr_PAD(2)" LOC = "P167" ; NET "OCB_Reg_Addr_PAD(3)" LOC = "P165" ; NET "OCB_Reg_Addr_PAD(4)" LOC = "P164" ; NET "OCB_Reg_Addr_PAD(5)" LOC = "P163" ; NET "OCB_Reg_Addr_PAD(6)" LOC = "P162" ; NET "OCB_Reg_Addr_PAD(7)" LOC = "P160" ; // NET "OCB_Reg_Addr_PAD(8)" LOC = "P157" ; # not used NET "OCB_Data_PAD(0)" LOC = "P177" ; NET "OCB_Data_PAD(1)" LOC = "P173" ; NET "OCB_Data_PAD(2)" LOC = "P159" ; NET "OCB_Data_PAD(3)" LOC = "P152" ; NET "OCB_Data_PAD(4)" LOC = "P148" ; NET "OCB_Data_PAD(5)" LOC = "P141" ; NET "OCB_Data_PAD(6)" LOC = "P129" ; NET "OCB_Data_PAD(7)" LOC = "P123" ; NET "OCB_Data_PAD(8)" LOC = "P176" ; NET "OCB_Data_PAD(9)" LOC = "P172" ; NET "OCB_Data_PAD(10)" LOC = "P155" ; NET "OCB_Data_PAD(11)" LOC = "P154" ; NET "OCB_Data_PAD(12)" LOC = "P145" ; NET "OCB_Data_PAD(13)" LOC = "P138" ; NET "OCB_Data_PAD(14)" LOC = "P131" ; NET "OCB_Data_PAD(15)" LOC = "P126" ; NET "FPGA_OE_PAD*" LOC = "P187" ; NET "HQ_Timing_PAD(0)" LOC = "P2" ; NET "HQ_Timing_PAD(1)" LOC = "P63" ; NET "HQ_Timing_PAD(2)" LOC = "P124" ; NET "HQ_Timing_PAD(3)" LOC = "P184" ; NET "Chip_Status_PAD*" LOC = "P174" ; // High-Speed Read Out Signals: DO NOT MODIFY (except FM/not FM changes) // High Speed Readout Control and Data Bus Lines, Capture Control Lines // DO NOT MODIFY (except FM/not FM changes) and to exclude // NET "Capture_HSRO_Data_PAD*" LOC = "P133" ; # not on FM // NET "Capture_Monitor_Data_PAD*" LOC = "P134" ; # not on FM // NET "HSRO_DCE_In_PAD*" LOC = "P89" ; # FM only // NET "HSRO_DCE_In_PAD*" LOC = "P28" ; # not on FM // NET "HSRO_DCE_Out_PAD*" LOC = "P64" ; // NET "HSRO_Data_PAD(0)" LOC = "P178" ; // NET "HSRO_Data_PAD(1)" LOC = "P171" ; // NET "HSRO_Data_PAD(2)" LOC = "P156" ; // NET "HSRO_Data_PAD(3)" LOC = "P147" ; // NET "HSRO_Data_PAD(4)" LOC = "P146" ; // NET "HSRO_Data_PAD(5)" LOC = "P139" ; // NET "HSRO_Data_PAD(6)" LOC = "P128" ; // NET "HSRO_Data_PAD(7)" LOC = "P125" ; // NET "HSRO_Data_PAD(8)" LOC = "P175" ; // NET "HSRO_Data_PAD(9)" LOC = "P170" ; // NET "HSRO_Data_PAD(10)" LOC = "P153" ; // NET "HSRO_Data_PAD(11)" LOC = "P149" ; // NET "HSRO_Data_PAD(12)" LOC = "P144" ; // NET "HSRO_Data_PAD(13)" LOC = "P137" ; // NET "HSRO_Data_PAD(14)" LOC = "P130" ; // NET "HSRO_Data_PAD(15)" LOC = "P127" ; // NET "HSRO_Data_Valid_PAD*" LOC = "P132" ; // Dedicated and/or Reserved Signals: DO NOT MODIFY // (note: these signals not explicitly called out in FPGA design) // NET "CCLK goes here" LOC = "P179" ; // NET "DONE -- Chip_Configed" LOC = "P120" ; // NET "ERR/INIT* goes here" LOC = "P89" ; # HDI* on FM // NET "LDC* goes here" LOC = "P68" ; // NET "M0 -- VDD" LOC = "P60" ; // NET "M1 -- GROUND" LOC = "P58" ; // NET "M2 -- VDD" LOC = "P62" ; // NET "PROG* -- Config_Chip*" LOC = "P122" ; // NET "TCK goes here" LOC = "P7" ; // NET "TDI goes here" LOC = "P6" ; // NET "TDO goes here" LOC = "P181" ; // NET "TMS goes here" LOC = "P17" ; // NET "formerly OCB_Reg_Addr_PAD(8)" LOC = "P157" ; // MSA Input and MSA Output signals, these are specific to this // particular FPGA design NET "MSA_Input_PAD(0)" LOC = "P35" ; NET "MSA_Input_PAD(1)" LOC = "P36" ; NET "MSA_Input_PAD(2)" LOC = "P38" ; NET "MSA_Input_PAD(3)" LOC = "P39" ; NET "MSA_Input_PAD(4)" LOC = "P41" ; NET "MSA_Input_PAD(5)" LOC = "P42" ; NET "MSA_Input_PAD(6)" LOC = "P43" ; NET "MSA_Input_PAD(7)" LOC = "P44" ; NET "MSA_Input_PAD(8)" LOC = "P46" ; NET "MSA_Input_PAD(9)" LOC = "P47" ; NET "MSA_Input_PAD(10)" LOC = "P48" ; NET "MSA_Input_PAD(11)" LOC = "P49" ; NET "MSA_Input_PAD(12)" LOC = "P50" ; NET "MSA_Input_PAD(13)" LOC = "P51" ; NET "MSA_Input_PAD(14)" LOC = "P52" ; NET "MSA_Input_PAD(15)" LOC = "P53" ; NET "MSA_Input_PAD(16)" LOC = "P54" ; NET "MSA_Input_PAD(17)" LOC = "P55" ; NET "MSA_Input_PAD(18)" LOC = "P56" ; NET "MSA_Input_PAD(19)" LOC = "P57" ; NET "MSA_Input_PAD(20)" LOC = "P65" ; NET "MSA_Input_PAD(21)" LOC = "P66" ; NET "MSA_Input_PAD(22)" LOC = "P67" ; NET "MSA_Input_PAD(23)" LOC = "P69" ; NET "MSA_Input_PAD(24)" LOC = "P70" ; NET "MSA_Input_PAD(25)" LOC = "P71" ; NET "MSA_Input_PAD(26)" LOC = "P72" ; NET "MSA_Input_PAD(27)" LOC = "P73" ; NET "MSA_Input_PAD(28)" LOC = "P74" ; NET "MSA_Input_PAD(29)" LOC = "P76" ; NET "MSA_Input_PAD(30)" LOC = "P77" ; NET "MSA_Input_PAD(31)" LOC = "P78" ; NET "MSA_Input_PAD(32)" LOC = "P27" ; NET "MSA_Input_PAD(33)" LOC = "P26" ; NET "MSA_Input_PAD(34)" LOC = "P25" ; NET "MSA_Input_PAD(35)" LOC = "P24" ; NET "MSA_Input_PAD(36)" LOC = "P23" ; NET "MSA_Input_PAD(37)" LOC = "P21" ; NET "MSA_Input_PAD(38)" LOC = "P20" ; NET "MSA_Input_PAD(39)" LOC = "P18" ; NET "MSA_Input_PAD(40)" LOC = "P16" ; NET "MSA_Input_PAD(41)" LOC = "P15" ; NET "MSA_Input_PAD(42)" LOC = "P13" ; NET "MSA_Input_PAD(43)" LOC = "P12" ; NET "MSA_Input_PAD(44)" LOC = "P11" ; NET "MSA_Input_PAD(45)" LOC = "P10" ; NET "MSA_Input_PAD(46)" LOC = "P9" ; NET "MSA_Input_PAD(47)" LOC = "P8" ; NET "MSA_Input_PAD(48)" LOC = "P5" ; NET "MSA_Input_PAD(49)" LOC = "P4" ; NET "MSA_Input_PAD(50)" LOC = "P3" ; NET "MSA_Input_PAD(51)" LOC = "P239" ; NET "MSA_Input_PAD(52)" LOC = "P238" ; NET "MSA_Input_PAD(53)" LOC = "P237" ; NET "MSA_Input_PAD(54)" LOC = "P236" ; NET "MSA_Input_PAD(55)" LOC = "P235" ; NET "MSA_Input_PAD(56)" LOC = "P234" ; NET "MSA_Input_PAD(57)" LOC = "P233" ; NET "MSA_Input_PAD(58)" LOC = "P232" ; NET "MSA_Input_PAD(59)" LOC = "P231" ; NET "MSA_Input_PAD(60)" LOC = "P230" ; NET "MSA_Input_PAD(61)" LOC = "P229" ; NET "MSA_Input_PAD(62)" LOC = "P228" ; NET "MSA_Input_PAD(63)" LOC = "P226" ; // NET "MSA_Input_PAD(64)" LOC = "P79" ; Not Checked // NET "MSA_Input_PAD(65)" LOC = "P81" ; // NET "MSA_Input_PAD(66)" LOC = "P82" ; // NET "MSA_Input_PAD(67)" LOC = "P84" ; // NET "MSA_Input_PAD(68)" LOC = "P85" ; // NET "MSA_Input_PAD(69)" LOC = "P86" ; // NET "MSA_Input_PAD(70)" LOC = "P87" ; // NET "MSA_Input_PAD(71)" LOC = "P88" ; // NET "MSA_Input_PAD(72)" LOC = "P92" ; // NET "MSA_Input_PAD(73)" LOC = "P93" ; // NET "MSA_Input_PAD(74)" LOC = "P94" ; // NET "MSA_Input_PAD(75)" LOC = "P95" ; // NET "MSA_Input_PAD(76)" LOC = "P96" ; // NET "MSA_Input_PAD(77)" LOC = "P97" ; // NET "MSA_Input_PAD(78)" LOC = "P99" ; // NET "MSA_Input_PAD(79)" LOC = "P100" ; // NET "MSA_Input_PAD(80)" LOC = "P102" ; Not Checked // NET "MSA_Input_PAD(81)" LOC = "P103" ; // NET "MSA_Input_PAD(82)" LOC = "P104" ; // NET "MSA_Input_PAD(83)" LOC = "P105" ; // NET "MSA_Input_PAD(84)" LOC = "P107" ; // NET "MSA_Input_PAD(85)" LOC = "P108" ; // NET "MSA_Input_PAD(86)" LOC = "P109" ; // NET "MSA_Input_PAD(87)" LOC = "P110" ; // NET "MSA_Input_PAD(88)" LOC = "P111" ; // NET "MSA_Input_PAD(89)" LOC = "P112" ; // NET "MSA_Input_PAD(90)" LOC = "P113" ; // NET "MSA_Input_PAD(91)" LOC = "P114" ; // NET "MSA_Input_PAD(92)" LOC = "P115" ; // NET "MSA_Input_PAD(93)" LOC = "P116" ; // NET "MSA_Input_PAD(94)" LOC = "P117" ; // NET "MSA_Input_PAD(95)" LOC = "P118" ; // NET "MSA_Input_PAD(96)" LOC = "P225" ; Not Checked // NET "MSA_Input_PAD(97)" LOC = "P224" ; // NET "MSA_Input_PAD(98)" LOC = "P223" ; // NET "MSA_Input_PAD(99)" LOC = "P221" ; // NET "MSA_Input_PAD(100)" LOC = "P220" ; // NET "MSA_Input_PAD(101)" LOC = "P218" ; // NET "MSA_Input_PAD(102)" LOC = "P217" ; // NET "MSA_Input_PAD(103)" LOC = "P216" ; // NET "MSA_Input_PAD(104)" LOC = "P215" ; // NET "MSA_Input_PAD(105)" LOC = "P214" ; // NET "MSA_Input_PAD(106)" LOC = "P213" ; // NET "MSA_Input_PAD(107)" LOC = "P210" ; // NET "MSA_Input_PAD(108)" LOC = "P209" ; // NET "MSA_Input_PAD(109)" LOC = "P208" ; // NET "MSA_Input_PAD(110)" LOC = "P207" ; // NET "MSA_Input_PAD(111)" LOC = "P206" ; // NET "MSA_Input_PAD(112)" LOC = "P205" ; Not Checked // NET "MSA_Input_PAD(113)" LOC = "P203" ; // NET "MSA_Input_PAD(114)" LOC = "P202" ; // NET "MSA_Input_PAD(115)" LOC = "P200" ; // NET "MSA_Input_PAD(116)" LOC = "P199" ; // NET "MSA_Input_PAD(117)" LOC = "P198" ; // NET "MSA_Input_PAD(118)" LOC = "P197" ; // NET "MSA_Input_PAD(119)" LOC = "P194" ; // NET "MSA_Input_PAD(120)" LOC = "P193" ; // NET "MSA_Input_PAD(121)" LOC = "P192" ; // NET "MSA_Input_PAD(122)" LOC = "P191" ; // NET "MSA_Input_PAD(123)" LOC = "P190" ; // NET "MSA_Input_PAD(124)" LOC = "P189" ; // NET "MSA_Input_PAD(125)" LOC = "P188" ; // NET "MSA_Input_PAD(126)" LOC = "P186" ; // NET "MSA_Input_PAD(127)" LOC = "P185" ; NET "MSA_Output_PAD(0)" LOC = "P100" ; NET "MSA_Output_PAD(1)" LOC = "P99" ; NET "MSA_Output_PAD(2)" LOC = "P97" ; NET "MSA_Output_PAD(3)" LOC = "P96" ; NET "MSA_Output_PAD(4)" LOC = "P95" ; NET "MSA_Output_PAD(5)" LOC = "P94" ; NET "MSA_Output_PAD(6)" LOC = "P93" ; NET "MSA_Output_PAD(7)" LOC = "P92" ; NET "MSA_Output_PAD(8)" LOC = "P88" ; NET "MSA_Output_PAD(9)" LOC = "P87" ; NET "MSA_Output_PAD(10)" LOC = "P86" ; NET "MSA_Output_PAD(11)" LOC = "P85" ; NET "MSA_Output_PAD(12)" LOC = "P84" ; NET "MSA_Output_PAD(13)" LOC = "P82" ; NET "MSA_Output_PAD(14)" LOC = "P81" ; NET "MSA_Output_PAD(15)" LOC = "P79" ; NET "MSA_Output_PAD(16)" LOC = "P225" ; NET "MSA_Output_PAD(17)" LOC = "P224" ; NET "MSA_Output_PAD(18)" LOC = "P223" ; NET "MSA_Output_PAD(19)" LOC = "P221" ; NET "MSA_Output_PAD(20)" LOC = "P220" ; NET "MSA_Output_PAD(21)" LOC = "P218" ; NET "MSA_Output_PAD(22)" LOC = "P217" ; NET "MSA_Output_PAD(23)" LOC = "P216" ; NET "MSA_Output_PAD(24)" LOC = "P215" ; NET "MSA_Output_PAD(25)" LOC = "P214" ; NET "MSA_Output_PAD(26)" LOC = "P213" ; NET "MSA_Output_PAD(27)" LOC = "P210" ; NET "MSA_Output_PAD(28)" LOC = "P209" ; NET "MSA_Output_PAD(29)" LOC = "P208" ; NET "MSA_Output_PAD(30)" LOC = "P207" ; NET "MSA_Output_PAD(31)" LOC = "P206" ;