net Clk_FBp feedback = 12ns NET Clk_SDp;

#NET Locked_i MAXDELAY = 6.5ns;

#####################
# clock constraints #
#####################
NET "Clkp" TNM_NET = clkp;
Timespec TS_clkp = PERIOD "clkp" 16ns  HIGH 50%;
#
#specifying clock periods between clk1x and clk2x
#
NET Clk_i  TNM=c2x;
NET Clk_j  TNM=c1x;

TIMESPEC TS11= FROM: c1x: TO: c2x: 8ns;

################################
# input and output constraints #
################################
#
#The min setup (Tsu) of the SDRAM-8 is 2ns, plus 500ps of board delay
#we need to add this OFFSET to all outputs to SDRAM
#
NET sd_add<*> OFFSET = OUT : 2.5 : BEFORE : Clkp ;
NET sd_data<*> OFFSET = OUT : 2.5 : BEFORE : Clkp ;
NET sd_ras OFFSET = OUT	: 2.5 : BEFORE : Clkp ;
NET sd_cas OFFSET = OUT	: 2.5 : BEFORE : Clkp ;
NET sd_we OFFSET = OUT : 2.5 : BEFORE : Clkp ;
NET sd_ba OFFSET = OUT : 2.5 : BEFORE : Clkp ;
#
#The max clock-to-out (Tac) of the SDRAM-8 is 6ns, plus 300ps of board delay
#we need to add this OFFSET to all inputs from SDRAM
#
NET sd_data<*> OFFSET = IN : 6.3 : VALID : 6.3 : AFTER : Clkp ;


###########################################
# set IOBDELAY = NONE attribute for input signals #
##########################################
#By default, the IBUF has a DELAY element to guarantee 0 hold time
#By turning off the DELAY element, we save ~500ps in IBUF delay
NET sd_data<0> IOBDELAY = NONE;
NET sd_data<1> IOBDELAY = NONE;
NET sd_data<2> IOBDELAY = NONE;
NET sd_data<3> IOBDELAY = NONE;
NET sd_data<4> IOBDELAY = NONE;
NET sd_data<5> IOBDELAY = NONE;
NET sd_data<6> IOBDELAY = NONE;
NET sd_data<7> IOBDELAY = NONE;
NET sd_data<8> IOBDELAY = NONE;
NET sd_data<9> IOBDELAY = NONE;
NET sd_data<10> IOBDELAY = NONE;
NET sd_data<11> IOBDELAY = NONE;
NET sd_data<12> IOBDELAY = NONE;
NET sd_data<13> IOBDELAY = NONE;
NET sd_data<14> IOBDELAY = NONE;
NET sd_data<15> IOBDELAY = NONE;
NET sd_data<16> IOBDELAY = NONE;
NET sd_data<17> IOBDELAY = NONE;
NET sd_data<18> IOBDELAY = NONE;
NET sd_data<19> IOBDELAY = NONE;
NET sd_data<20> IOBDELAY = NONE;
NET sd_data<21> IOBDELAY = NONE;
NET sd_data<22> IOBDELAY = NONE;
NET sd_data<23> IOBDELAY = NONE;
NET sd_data<24> IOBDELAY = NONE;
NET sd_data<25> IOBDELAY = NONE;
NET sd_data<26> IOBDELAY = NONE;
NET sd_data<27> IOBDELAY = NONE;
NET sd_data<28> IOBDELAY = NONE;
NET sd_data<29> IOBDELAY = NONE;
NET sd_data<30> IOBDELAY = NONE;
NET sd_data<31> IOBDELAY = NONE;
NET AD<0> IOBDELAY = NONE;
NET AD<1> IOBDELAY = NONE;
NET AD<2> IOBDELAY = NONE;
NET AD<3> IOBDELAY = NONE;
NET AD<4> IOBDELAY = NONE;
NET AD<5> IOBDELAY = NONE;
NET AD<6> IOBDELAY = NONE;
NET AD<7> IOBDELAY = NONE;
NET AD<8> IOBDELAY = NONE;
NET AD<9> IOBDELAY = NONE;
NET AD<10> IOBDELAY = NONE;
NET AD<11> IOBDELAY = NONE;
NET AD<12> IOBDELAY = NONE;
NET AD<13> IOBDELAY = NONE;
NET AD<14> IOBDELAY = NONE;
NET AD<15> IOBDELAY = NONE;
NET AD<16> IOBDELAY = NONE;
NET AD<17> IOBDELAY = NONE;
NET AD<18> IOBDELAY = NONE;
NET AD<19> IOBDELAY = NONE;
NET AD<20> IOBDELAY = NONE;
NET AD<21> IOBDELAY = NONE;
NET AD<22> IOBDELAY = NONE;
NET AD<23> IOBDELAY = NONE;
NET AD<24> IOBDELAY = NONE;
NET AD<25> IOBDELAY = NONE;
NET AD<26> IOBDELAY = NONE;
NET AD<27> IOBDELAY = NONE;
NET AD<28> IOBDELAY = NONE;
NET AD<29> IOBDELAY = NONE;
NET AD<30> IOBDELAY = NONE;
NET AD<31> IOBDELAY = NONE;