diff options
Diffstat (limited to 'fpga/usrp2/top')
| -rw-r--r-- | fpga/usrp2/top/B100/Makefile | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/E1x0/Makefile | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/E1x0/u1e.v | 4 | ||||
| -rw-r--r-- | fpga/usrp2/top/E1x0/u1e_core.v | 4 | ||||
| -rw-r--r-- | fpga/usrp2/top/Makefile.common | 5 | ||||
| -rw-r--r-- | fpga/usrp2/top/N2x0/Makefile.N200R3 | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/N2x0/Makefile.N200R4 | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/N2x0/Makefile.N210R3 | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/N2x0/Makefile.N210R4 | 1 | ||||
| -rw-r--r-- | fpga/usrp2/top/USRP2/Makefile | 1 | ||||
| -rwxr-xr-x | fpga/usrp2/top/python/check_timing.py | 30 | 
11 files changed, 45 insertions, 5 deletions
| diff --git a/fpga/usrp2/top/B100/Makefile b/fpga/usrp2/top/B100/Makefile index ca6ec9320..7ab56f9bd 100644 --- a/fpga/usrp2/top/B100/Makefile +++ b/fpga/usrp2/top/B100/Makefile @@ -69,6 +69,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/E1x0/Makefile b/fpga/usrp2/top/E1x0/Makefile index 5d721979b..19fb93ebf 100644 --- a/fpga/usrp2/top/E1x0/Makefile +++ b/fpga/usrp2/top/E1x0/Makefile @@ -72,6 +72,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/E1x0/u1e.v b/fpga/usrp2/top/E1x0/u1e.v index 4f85b7d6e..dbd6173f3 100644 --- a/fpga/usrp2/top/E1x0/u1e.v +++ b/fpga/usrp2/top/E1x0/u1e.v @@ -76,7 +76,7 @@ module u1e     clk_doubler (.CLKFB(clk_fb), .CLKIN(clk_fpga_in), .RST(dcm_rst),                   .DSSEN(0), .PSCLK(0), .PSEN(0), .PSINCDEC(0), .PSDONE(),   		.CLKDV(), .CLKFX(), .CLKFX180(),  -                .CLK2X(clk_2x), .CLK2X180(),  +                .CLK2X(), .CLK2X180(),                   .CLK0(clk_fb), .CLK90(clk_fpga), .CLK180(), .CLK270(),                   .LOCKED(dcm_locked), .STATUS()); @@ -141,7 +141,7 @@ module u1e     // /////////////////////////////////////////////////////////////////////////     // Main U1E Core -   u1e_core u1e_core(.clk_fpga(clk_fpga), .bus_clk(clk_2x), .rst_fpga(~debug_pb), +   u1e_core u1e_core(.clk_fpga(clk_fpga), .rst_fpga(~debug_pb),  		     .debug_led(debug_led), .debug(debug), .debug_clk(debug_clk),  		     .debug_txd(FPGA_TXD), .debug_rxd(FPGA_RXD),  		     .EM_CLK(EM_CLK), .EM_D(EM_D), .EM_A(EM_A), .EM_NBE(EM_NBE), diff --git a/fpga/usrp2/top/E1x0/u1e_core.v b/fpga/usrp2/top/E1x0/u1e_core.v index d481867e3..c4fc16444 100644 --- a/fpga/usrp2/top/E1x0/u1e_core.v +++ b/fpga/usrp2/top/E1x0/u1e_core.v @@ -18,7 +18,7 @@  module u1e_core -  (input clk_fpga, input bus_clk, input rst_fpga, +  (input clk_fpga, input rst_fpga,     output [3:0] debug_led, output [31:0] debug, output [1:0] debug_clk,     output debug_txd, input debug_rxd, @@ -117,7 +117,7 @@ module u1e_core        .in(set_data),.out(),.changed(clear_tx));     gpmc_async #(.TXFIFOSIZE(TXFIFOSIZE), .RXFIFOSIZE(RXFIFOSIZE)) -   gpmc (.arst(wb_rst), .bus_clk(bus_clk), +   gpmc (.arst(wb_rst),  	 .EM_CLK(EM_CLK), .EM_D(EM_D), .EM_A(EM_A), .EM_NBE(EM_NBE),  	 .EM_WAIT0(EM_WAIT0), .EM_NCS4(EM_NCS4), .EM_NCS6(EM_NCS6), .EM_NWE(EM_NWE),   	 .EM_NOE(EM_NOE), diff --git a/fpga/usrp2/top/Makefile.common b/fpga/usrp2/top/Makefile.common index 6f855a070..3a35e71e7 100644 --- a/fpga/usrp2/top/Makefile.common +++ b/fpga/usrp2/top/Makefile.common @@ -1,5 +1,5 @@  # -# Copyright 2008, 2009, 2010 Ettus Research LLC +# Copyright 2008-2011 Ettus Research LLC  #  ################################################## @@ -14,10 +14,12 @@ endif  BASE_DIR = $(abspath ..)  ISE_HELPER = xtclsh $(BASE_DIR)/tcl/ise_helper.tcl  SANITY_CHECKER = python $(BASE_DIR)/python/check_inout.py +TIMING_CHECKER = python $(BASE_DIR)/python/check_timing.py  ISE_FILE = $(BUILD_DIR)/$(TOP_MODULE).$(ISE_EXT)  BIN_FILE = $(BUILD_DIR)/$(TOP_MODULE).bin  BIT_FILE = $(BUILD_DIR)/$(TOP_MODULE).bit  MCS_FILE = $(BUILD_DIR)/$(TOP_MODULE).mcs +TWR_FILE = $(BUILD_DIR)/$(TOP_MODULE).twr  ##################################################  # Global Targets @@ -35,6 +37,7 @@ synth: $(ISE_FILE)  bin: check $(BIN_FILE)  	$(ISE_HELPER) "Generate Programming File" +	$(TIMING_CHECKER) $(TWR_FILE)  mcs: $(MCS_FILE) diff --git a/fpga/usrp2/top/N2x0/Makefile.N200R3 b/fpga/usrp2/top/N2x0/Makefile.N200R3 index a525836ed..9ed5ece00 100644 --- a/fpga/usrp2/top/N2x0/Makefile.N200R3 +++ b/fpga/usrp2/top/N2x0/Makefile.N200R3 @@ -71,6 +71,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/N2x0/Makefile.N200R4 b/fpga/usrp2/top/N2x0/Makefile.N200R4 index 0ca40e1bd..f8640224f 100644 --- a/fpga/usrp2/top/N2x0/Makefile.N200R4 +++ b/fpga/usrp2/top/N2x0/Makefile.N200R4 @@ -73,6 +73,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/N2x0/Makefile.N210R3 b/fpga/usrp2/top/N2x0/Makefile.N210R3 index e29251e1c..2937dc409 100644 --- a/fpga/usrp2/top/N2x0/Makefile.N210R3 +++ b/fpga/usrp2/top/N2x0/Makefile.N210R3 @@ -71,6 +71,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/N2x0/Makefile.N210R4 b/fpga/usrp2/top/N2x0/Makefile.N210R4 index 01a9e19fd..39a2508f9 100644 --- a/fpga/usrp2/top/N2x0/Makefile.N210R4 +++ b/fpga/usrp2/top/N2x0/Makefile.N210R4 @@ -73,6 +73,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/USRP2/Makefile b/fpga/usrp2/top/USRP2/Makefile index e9b43491a..8ebb43639 100644 --- a/fpga/usrp2/top/USRP2/Makefile +++ b/fpga/usrp2/top/USRP2/Makefile @@ -71,6 +71,7 @@ TRANSLATE_PROPERTIES = \  "Macro Search Path" "$(shell pwd)/../../coregen/"  MAP_PROPERTIES = \ +"Generate Detailed MAP Report" TRUE \  "Allow Logic Optimization Across Hierarchy" TRUE \  "Map to Input Functions" 4 \  "Optimization Strategy (Cover Mode)" Speed \ diff --git a/fpga/usrp2/top/python/check_timing.py b/fpga/usrp2/top/python/check_timing.py new file mode 100755 index 000000000..c57e889d0 --- /dev/null +++ b/fpga/usrp2/top/python/check_timing.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python +# +# Copyright 2011 Ettus Research LLC +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program.  If not, see <http://www.gnu.org/licenses/>. + +import sys +import re + +def print_timing_constraint_summary(twr_file): +    output = "" +    keep = False +    for line in open(twr_file).readlines(): +        if 'Derived Constraint Report' in line: keep = True +        if keep: output += line +        if 'constraint' in line and 'met' in line: break +    print("\n\n"+output) + +if __name__=='__main__': map(print_timing_constraint_summary, sys.argv[1:]) | 
