| 1 | ################################################################################ |
| 2 | ## File: Makefile |
| 3 | ## Notes: runs with "gmake" only, not with "make" |
| 4 | ## to get the PEU SAT(FNX lpusd) to run in our sims environment. |
| 5 | ## Description: |
| 6 | ## ----------- |
| 7 | ## Top level Makefile for compiling Vera ILU_PEU environment. |
| 8 | ## |
| 9 | ## release note: |
| 10 | ## ------------- |
| 11 | ## 01/18/2005 ac on archie flow, reference new remove_access_methods.pl |
| 12 | ## 04/05/2005 ac add zeroinmgr for disable check function |
| 13 | ################################################################################ |
| 14 | |
| 15 | ################################################################################ |
| 16 | # variable declarations |
| 17 | ################################################################################ |
| 18 | common_dir_classes = $(DV_ROOT)/verif/env/common/vera/classes |
| 19 | common_dir = $(DV_ROOT)/verif/env/common/vera |
| 20 | |
| 21 | #---------------------------------------------------------------------------- |
| 22 | # UD : To make ilu_peu and FC SAT use the same Makefile. |
| 23 | #---------------------------------------------------------------------------- |
| 24 | ifdef N2_FC |
| 25 | SYS := fc |
| 26 | else |
| 27 | SYS := ilu_peu |
| 28 | endif |
| 29 | |
| 30 | ECHO := echo |
| 31 | PID := $(shell echo $$$$) ## :-). Just get a random number |
| 32 | |
| 33 | .SUFFIXES: |
| 34 | |
| 35 | VERA_LIBDIR ?= vera/lib |
| 36 | |
| 37 | ifdef N2_IOS |
| 38 | testbench_vshell = tb_top.vshell |
| 39 | else |
| 40 | testbench_vshell = $(SYS)_top.vshell |
| 41 | endif |
| 42 | testbench_vcon = $(SYS)_top.vcon |
| 43 | |
| 44 | |
| 45 | #---------------------------------------------------------------------------- |
| 46 | # Coverage related setup |
| 47 | #---------------------------------------------------------------------------- |
| 48 | |
| 49 | |
| 50 | ## Coverage top level directory |
| 51 | CTOP := ${DV_ROOT}/verif/env/common/coverage |
| 52 | |
| 53 | |
| 54 | ## Coverage users |
| 55 | ## -------- ----- |
| 56 | ## 1. add <unit> to EXCLUDED_UNITS and COV_UNITS |
| 57 | ## 2. Add entry for <unit> below "all" |
| 58 | ## |
| 59 | ## Look for "Coverage edit", below. |
| 60 | ## Remember to use "gmake" instead of "make" when testing. |
| 61 | |
| 62 | ## Selectively turn on coverage units needed |
| 63 | ## Coverage edit (1) |
| 64 | EXCLUDED_UNITS := ilu_peu |
| 65 | EXCLUDED_UNITS += |
| 66 | |
| 67 | COV_UNITS := |
| 68 | VERA_DEFS ?= |
| 69 | |
| 70 | ## When top level coverage objects are built, they update <unit>_built |
| 71 | ## target file. |
| 72 | ## These are used to decide if $(SYS)_top.vro needs to be recompiled |
| 73 | COV_BUILT := $(COV_UNITS:%=$(VERA_LIBDIR)/%_built) |
| 74 | |
| 75 | ifdef ILU_PEU_COVERAGE |
| 76 | COV_UNITS += ilu_peu |
| 77 | VERA_DEFS += -DILU_PEU_COVERAGE |
| 78 | endif |
| 79 | |
| 80 | ##### zeroin manager |
| 81 | ifdef NO_0INMGR |
| 82 | VERA_DEFS += -DNO_0INMGR |
| 83 | endif |
| 84 | |
| 85 | #### only compile these files if NO_0INMGR switch is not present |
| 86 | zeroin_src := |
| 87 | zeroin_define_src := |
| 88 | ifndef NO_0INMGR |
| 89 | zeroin_define_src := $(VERA_LIBDIR)/ZeroInDefines.vri |
| 90 | zeroin_src := $(common_dir)/classes/ZeroInManager.vr |
| 91 | endif |
| 92 | #AC: |
| 93 | #AC: VERA_VRH ?= vera -cmp -I . -max_error 5 -q $(VERA_DEFS) -H |
| 94 | #AC: VERA_VRO ?= vera -cmp -I . -max_error 5 -q $(VERA_DEFS) |
| 95 | #AC: |
| 96 | #AC: COMMON_DIR := ${DV_ROOT}/verif/env/common/vera/ |
| 97 | #AC: |
| 98 | #AC: PORT_SRC := include/ilu_peu_ports_binds.vrhpal |
| 99 | #AC: MONPORT_SRC := include/ilu_peumon_ports_binds.vrhpal |
| 100 | #AC: IF_SRC := include/ilu_peu.if.vrhpal |
| 101 | #AC: MONIF_SRC := include/ilu_peumon.if.vrhpal |
| 102 | #AC: PORT_DEST := $(VERA_LIBDIR)/ilu_peu_ports_binds.vrh |
| 103 | #AC: IF_DEST := $(VERA_LIBDIR)/ilu_peu.if.vrh |
| 104 | #AC: MONPORT_DEST := $(VERA_LIBDIR)/ilu_peumon_ports_binds.vrh |
| 105 | #AC: MONIF_DEST := $(VERA_LIBDIR)/ilu_peumon.if.vrh |
| 106 | |
| 107 | # ???VERA_INCLUDE := $(wildcard include/*vcon*) |
| 108 | # ???VERA_INCLUDE += $(wildcard include/*.vrh) |
| 109 | # ???VERA_INCLUDE += $(wildcard include/*.vri) |
| 110 | # ???VERA_INCLUDE := $(subst include,$(VERA_LIBDIR),$(VERA_INCLUDE)) |
| 111 | |
| 112 | # ??? PACKETS := packets/ilu_peu_err_mask.vr |
| 113 | # ??? PACKETS += packets/ilu_peu_basic_packet.vr |
| 114 | # ??? PACKETS += $(wildcard packets/*.vr) |
| 115 | # ??? PACKETS := $(subst packets,$(VERA_LIBDIR),$(PACKETS)) |
| 116 | # ??? PACKETS_VRH := $(patsubst %.vr,%.vrh,$(PACKETS)) |
| 117 | # ??? PACKETS_VRO := $(patsubst %.vr,%.vro,$(PACKETS)) |
| 118 | # ??? xxx |
| 119 | # ??? STUBS := $(wildcard stubs/*.vr) |
| 120 | # ??? STUBS := $(subst stubs,$(VERA_LIBDIR),$(STUBS)) |
| 121 | # ??? STUBS_VRH := $(patsubst %.vr,%.vrh,$(STUBS)) |
| 122 | # ??? STUBS_VRO := $(patsubst %.vr,%.vro,$(STUBS)) |
| 123 | # ??? |
| 124 | # ??? MONITORS := $(wildcard monitors/*.vr) |
| 125 | # ??? MONITORS := $(subst monitors,$(VERA_LIBDIR),$(MONITORS)) |
| 126 | # ??? MONITORS_VRH := $(patsubst %.vr,%.vrh,$(MONITORS)) |
| 127 | # ??? MONITORS_VRO := $(patsubst %.vr,%.vro,$(MONITORS)) |
| 128 | # ??? |
| 129 | # ??? MISC := |
| 130 | # ??? |
| 131 | # ??? COMMON := std_display_class.vr |
| 132 | # ??? COMMON2 := ZeroInManager.vr |
| 133 | # ??? |
| 134 | # ??? COMMON_INCLUDE := $(wildcard $(COMMON_DIR)include/seeding.vri) |
| 135 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)include/std_display_defines.vri) |
| 136 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)include/plusArgMacros.vri) |
| 137 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)include/ZeroInDefines.vri) |
| 138 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)classes/*.vrh) |
| 139 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)classes/*.vr) |
| 140 | # ??? COMMON_INCLUDE += $(wildcard $(COMMON_DIR)*.vr*) |
| 141 | # ??? COMMON_INCLUDE := $(subst $(COMMON_DIR)include,$(VERA_LIBDIR),$(COMMON_INCLUDE)) |
| 142 | # ??? COMMON_VRH := $(patsubst %.vr,$(VERA_LIBDIR)/%.vrh,$(COMMON)) |
| 143 | # ??? ifndef NO_0INMGR |
| 144 | # ??? COMMON_VRH += $(patsubst %.vr,$(VERA_LIBDIR)/%.vrh,$(COMMON2)) |
| 145 | # ??? endif |
| 146 | # ??? COMMON_VRO := $(patsubst %.vr,$(VERA_LIBDIR)/%.vro,$(COMMON)) |
| 147 | # ??? ifndef NO_0INMGR |
| 148 | # ??? COMMON_VRO += $(patsubst %.vr,$(VERA_LIBDIR)/%.vro,$(COMMON2)) |
| 149 | # ??? endif |
| 150 | # ??? |
| 151 | # ??? MISC_VRH := $(patsubst %.vr,$(VERA_LIBDIR)/%.vrh,$(MISC)) |
| 152 | # ??? MISC_VRO := $(patsubst %.vr,$(VERA_LIBDIR)/%.vro,$(MISC)) |
| 153 | |
| 154 | |
| 155 | ################################################################################ |
| 156 | # all |
| 157 | ################################################################################ |
| 158 | |
| 159 | # ??? all: dir $(COMMON_INCLUDE) $(COMMON_VRH) $(COMMON_VRO) \ |
| 160 | # ??? $(PORT_DEST) $(IF_DEST) $(MONPORT_DEST) $(MONIF_DEST) $(COV_UNITS) $(VERA_INCLUDE) \ |
| 161 | # ??? $(PACKETS_VRH) $(PACKETS_VRO) \ |
| 162 | # ??? $(STUBS_VRH) $(STUBS_VRO)\ |
| 163 | # ??? $(MONITORS_VRH) $(MONITORS_VRO)\ |
| 164 | # ??? $(VERA_LIBDIR)/diag.vri \ |
| 165 | # ??? $(MISC_VRH) $(MISC_VRO) \ |
| 166 | # ??? $(VERA_LIBDIR)/ilu_peu_top.vro |
| 167 | # ??? |
| 168 | # ??? dir: |
| 169 | # ??? if (test ! -d $(VERA_LIBDIR)) then mkdir $(VERA_LIBDIR) ; fi |
| 170 | |
| 171 | #AC: $(PORT_DEST): $(PORT_SRC) |
| 172 | #AC: pal -r $< > $@ |
| 173 | #AC: |
| 174 | #AC: $(IF_DEST): $(IF_SRC) |
| 175 | #AC: pal -r $< > $@ |
| 176 | #AC: |
| 177 | #AC: $(MONPORT_DEST): $(MONPORT_SRC) |
| 178 | #AC: pal -r $< > $@ |
| 179 | #AC: |
| 180 | #AC: $(MONIF_DEST): $(MONIF_SRC) |
| 181 | #AC: pal -r $< > $@ |
| 182 | |
| 183 | |
| 184 | ################################################################################ |
| 185 | # Extra dependences for special rebuilds |
| 186 | ################################################################################ |
| 187 | # ??? $(VERA_LIBDIR)/$(SYS)_top.vro: $(COV_BUILT) $(VERA_LIBDIR)/units_used |
| 188 | # ??? $(VERA_LIBDIR)/$(SYS)_top.vrh: $(VERA_LIBDIR)/units_used |
| 189 | # ??? $(VERA_LIBDIR)/units_used: FORCE |
| 190 | # ??? test -f $@ || touch $@ |
| 191 | # ??? $(ECHO) $(COV_UNITS) > /tmp/units_used.$(PID) |
| 192 | # ??? diff /tmp/units_used.$(PID) $@ > /dev/null || \ |
| 193 | # ??? mv /tmp/units_used.$(PID) $@ |
| 194 | # ??? rm -f /tmp/units_used.$(PID) |
| 195 | # ??? $(ECHO) $(EXCLUDED_UNITS) > $(VERA_LIBDIR)/excluded_cov_units |
| 196 | # ??? |
| 197 | |
| 198 | |
| 199 | |
| 200 | #---------------------------------------------------------------------------- |
| 201 | # The following variables list the xtr's and Vera libraries required for |
| 202 | # this test environment. |
| 203 | # The libs will come from the Fire environment so that IOS and fullchip can |
| 204 | # use the same libs. The xtr's are from the fnx environment |
| 205 | #---------------------------------------------------------------------------- |
| 206 | lib_list = report CTSupportClasses CTVerifFmwork \ |
| 207 | CSRFmwork XactorComponents |
| 208 | #lib_list = report CTSupportClasses CTVerifFmwork \ |
| 209 | # CSRFmwork XactorComponents FNXPCIEXactor |
| 210 | |
| 211 | ifndef FC_NO_PEU_T2 |
| 212 | xtr_list = FNXPCIEXactor DMUXtr CCCXactor denali_root_monitor |
| 213 | else |
| 214 | xtr_list = FNXPCIEXactor DMUXtr CCCXactor |
| 215 | endif |
| 216 | |
| 217 | # switch to concatenate testbench vera |
| 218 | testbench_combine_vera = 1 |
| 219 | |
| 220 | #---------------------------------------------------------------------------- |
| 221 | # Use `testbench_vera_interface_deps' to define the dependencies for the |
| 222 | # be re-built. |
| 223 | #---------------------------------------------------------------------------- |
| 224 | # UD : To make ilu_peu and FC SAT use the same Makefile. |
| 225 | #---------------------------------------------------------------------------- |
| 226 | ifdef N2_FC |
| 227 | testbench_vera_interface_deps = FIRE_local_access_define.vri \ |
| 228 | top_defines.vri \ |
| 229 | ilupeu_defines.vri \ |
| 230 | ilupeu_report_macros.vri \ |
| 231 | dmu.vri |
| 232 | else |
| 233 | testbench_vera_interface_deps = FIRE_local_access_define.vri \ |
| 234 | ilu_peu.bind.vri\ |
| 235 | ilu_peu.if.vri \ |
| 236 | top_defines.vri \ |
| 237 | verilog_tasks.vri \ |
| 238 | ilupeu_defines.vri \ |
| 239 | ilupeu_report_macros.vri \ |
| 240 | dmu.vri |
| 241 | endif |
| 242 | |
| 243 | #---------------------------------------------------------------------------- |
| 244 | # Variables for Setting Print Level -- runsim tests/directed/foo printlevel=DEBUG_3 |
| 245 | #---------------------------------------------------------------------------- |
| 246 | printlevel = DEBUG_3 |
| 247 | print_control = +report_global_print_threshold=RPRT_$(printlevel) |
| 248 | |
| 249 | #---------------------------------------------------------------------------- |
| 250 | # Use `testbench_vera_src' to define the Vera source files used |
| 251 | # to build your environment. This is intended to list locally created |
| 252 | # sources (in this directory and its sub-directories) only |
| 253 | #---------------------------------------------------------------------------- |
| 254 | reggie_collection = csr/CSRCollection.vr |
| 255 | reggie_conf = csr/ilupeu_reggie_control.pl |
| 256 | #reggie_input_dir = $(asic_design_csrtool_dir)/output/vera |
| 257 | |
| 258 | #---------------------------------------------------------------------------- |
| 259 | # UD : To make ilu_peu and FC SAT use the same Makefile. |
| 260 | # Make a list of files used only by FC. conditionally include in testbench_vera_src |
| 261 | #---------------------------------------------------------------------------- |
| 262 | ilu_peu_only_src := |
| 263 | |
| 264 | ifdef N2_FC |
| 265 | N2fc_files = N2fc/N2fcPEUparams.vr \ |
| 266 | N2fc/N2fcXactionProbe.vr \ |
| 267 | N2fc/N2fcPioCfgIORdStr.vr \ |
| 268 | N2fc/N2fcPioCfgIOWrStr.vr \ |
| 269 | N2fc/N2fcPioMRdStr.vr \ |
| 270 | N2fc/N2fcPioMWrStr.vr \ |
| 271 | N2fc/N2fcIntxStr.vr \ |
| 272 | N2fc/N2fcilupeuIngressDmaWrStr.vr \ |
| 273 | N2fc/N2fcilupeuIngressDmaRdStr.vr \ |
| 274 | N2fc/N2fcDmaCfgIORwStr.vr \ |
| 275 | N2fc/N2fcDMAPEUCtx.vr \ |
| 276 | N2fc/N2fcCtx.vr |
| 277 | |
| 278 | strategy_files = N2fc/N2fcIommuMgr.vr \ |
| 279 | strategy/ilupeuScenario.vr \ |
| 280 | strategy/ilupeuStrategyBase.vr \ |
| 281 | N2fc/N2fcInitStrategy.vr \ |
| 282 | strategy/ilupeuLinkTrainingStrategy.vr \ |
| 283 | strategy/ilupeuTlpStrategyBase.vr \ |
| 284 | strategy/ilupeuIngressTlpStrategy.vr \ |
| 285 | strategy/ilupeuEgressTlpStrategy.vr |
| 286 | |
| 287 | else |
| 288 | |
| 289 | strategy_files = strategy/ilupeuScenario.vr \ |
| 290 | strategy/ilupeuStrategyBase.vr \ |
| 291 | strategy/ilupeuInitStrategy.vr \ |
| 292 | strategy/ilupeuLinkTrainingStrategy.vr \ |
| 293 | strategy/ilupeuTlpStrategyBase.vr \ |
| 294 | strategy/ilupeuIngressTlpStrategy.vr \ |
| 295 | strategy/ilupeuEgressTlpStrategy.vr |
| 296 | endif |
| 297 | |
| 298 | context_files = context/ilupeuContextBase.vr \ |
| 299 | context/ilupeuIngressContext.vr \ |
| 300 | context/ilupeuEgressContext.vr |
| 301 | |
| 302 | N2ctx_files = N2ctx/N2PEUCtxBase.vr \ |
| 303 | N2ctx/N2DMAPEUCtx.vr \ |
| 304 | N2ctx/N2PIOPEUCtx.vr \ |
| 305 | N2ctx/N2ErrTlpPEUCtx.vr \ |
| 306 | N2ctx/N2ExceptionPEUCtx.vr |
| 307 | |
| 308 | N2str_files = N2str/ilupeuStrBase.vr \ |
| 309 | N2str/ilupeuBootPEUStr.vr \ |
| 310 | N2str/ilupeuIngressDmaWrStr.vr \ |
| 311 | N2str/ilupeuIngressDmaRdStr.vr \ |
| 312 | N2str/ilupeuIngressMsgStr.vr \ |
| 313 | N2str/ilupeuPioBaseStr.vr \ |
| 314 | N2str/ilupeuPioCfgIORdStr.vr \ |
| 315 | N2str/ilupeuPioCfgIOWrStr.vr \ |
| 316 | N2str/ilupeuPioMRdStr.vr \ |
| 317 | N2str/ilupeuPioMWrStr.vr \ |
| 318 | N2str/ilupeuErrChkPEUStr.vr \ |
| 319 | N2str/ilupeuMalReqPEUStr.vr \ |
| 320 | N2str/ilupeuMalCplPEUStr.vr \ |
| 321 | N2str/ilupeuErrCplPEUStr.vr \ |
| 322 | N2str/ilupeuDmaURBasePEUStr.vr \ |
| 323 | N2str/ilupeuDmaURCfgIORdWrPEUStr.vr \ |
| 324 | N2str/ilupeuDmaURMsgDPEUStr.vr \ |
| 325 | N2str/ilupeuDmaURMsgPEUStr.vr \ |
| 326 | N2str/ilupeuDmaURRdLkPEUStr.vr \ |
| 327 | N2str/ilupeuDmaPoisonPEUStr.vr \ |
| 328 | N2str/ilupeuEdbErrPEUStr.vr \ |
| 329 | N2str/ilupeuEhbErrPEUStr.vr \ |
| 330 | N2str/ilupeuIhbErrPEUStr.vr \ |
| 331 | N2str/ilupeuLinkErrPEUStr.vr \ |
| 332 | N2str/ilupeuPEUErrPEUStr.vr \ |
| 333 | N2str/ilupeuTimeOutPEUStr.vr \ |
| 334 | N2str/ilupeuInErrPEUStr.vr \ |
| 335 | N2str/ilupeuReplayPEUStr.vr \ |
| 336 | N2str/ilupeuIngressRcvrErr.vr \ |
| 337 | N2str/ilupeuIngressDLLPErr.vr \ |
| 338 | N2str/ilupeuIngressAckNakErr.vr \ |
| 339 | N2str/ilupeuIngressduplicateSeqNmbrReq.vr \ |
| 340 | N2str/ilupeuIngressFCPErr.vr \ |
| 341 | N2str/ilupeuIngressnullTlpErr.vr \ |
| 342 | N2str/ilupeuEgrParErr.vr \ |
| 343 | N2str/ilupeuIngParErr.vr |
| 344 | |
| 345 | testbench_vera_src = ilupeuGlobals.vr \ |
| 346 | $(reggie_collection) \ |
| 347 | csr/ilupeuCSR.vr \ |
| 348 | ilupeuPodClass.vr \ |
| 349 | N2fc/N2fcPiuShadowRegs.vr \ |
| 350 | $(strategy_files) \ |
| 351 | $(context_files) \ |
| 352 | N2env/PEUTestEnv.vr \ |
| 353 | $(N2str_files) \ |
| 354 | $(N2ctx_files) \ |
| 355 | $(N2fc_files) \ |
| 356 | N2Test/N2PEUTestBase.vr |
| 357 | |
| 358 | ifndef FC_NO_PEU_T2 |
| 359 | denali_vera_dir = $(denali_dir)/ddvapi/vera |
| 360 | endif |
| 361 | |
| 362 | #---------------------------------------------------------------------------- |
| 363 | # Use `testbench_vera_cmp_switches' to pass arguments to the the Vera source file |
| 364 | # compilation command line. |
| 365 | #---------------------------------------------------------------------------- |
| 366 | # UD : To make ilu_peu and FC SAT use the same Makefile. |
| 367 | #---------------------------------------------------------------------------- |
| 368 | ifdef N2_FC |
| 369 | ifdef GATESIM |
| 370 | testbench_vera_cmp_switches = -g -max_error 5 -DN2_FC -DGATESIM |
| 371 | else |
| 372 | testbench_vera_cmp_switches = -g -max_error 5 -DN2_FC |
| 373 | endif |
| 374 | else |
| 375 | ifdef N2_IOS |
| 376 | testbench_vera_cmp_switches = -g -max_error 5 -DN2_IOS |
| 377 | else |
| 378 | testbench_vera_cmp_switches = -g -max_error 5 |
| 379 | endif |
| 380 | endif |
| 381 | #testbench_vera_cmp_switches = -q -g -max_error 5 |
| 382 | #testbench_vera_cmp_switches = -g |
| 383 | testbench_vera_incl_dir = csrtool |
| 384 | |
| 385 | fnx_lib_dir = $(DV_ROOT)/verif/env/fnx/vlib |
| 386 | perl_path = $(DV_ROOT)/tools/perl-5.8.0/bin/perl |
| 387 | |
| 388 | grp_tools_bin_dir = $(DV_ROOT)/verif/env/fnx/runsim/bin |
| 389 | export make_lib_depends = $(perl_path) $(grp_tools_bin_dir)/make_lib_depends3.pl |
| 390 | |
| 391 | testbench_home_dir = $(shell pwd) |
| 392 | |
| 393 | depends = $(VERA_LIBDIR)/depends |
| 394 | |
| 395 | |
| 396 | ifndef FC_NO_PEU_T2 |
| 397 | #---------------------------------------------------------------------------- |
| 398 | # Denali Environment Variables |
| 399 | #---------------------------------------------------------------------------- |
| 400 | |
| 401 | # Use the .denalirc located in PEU TB home directory |
| 402 | export DENALIRC = $(DV_ROOT)/verif/env/ilu_peu/.denalirc |
| 403 | endif |
| 404 | |
| 405 | ################################################################################ |
| 406 | # all |
| 407 | ################################################################################ |
| 408 | |
| 409 | all: $(depends) |
| 410 | $(MAKE) DEPEND=1 $(COV_UNITS) testbench |
| 411 | #all: $(depends) |
| 412 | # $(MAKE) DEPEND=1 testbench $(COV_UNITS) |
| 413 | |
| 414 | |
| 415 | $(VERA_LIBDIR) : |
| 416 | mkdir $(VERA_LIBDIR) |
| 417 | |
| 418 | ifneq ($(DEPEND),1) |
| 419 | vlib_dirs_lib = $(addprefix $(fnx_lib_dir)/, $(lib_list)) |
| 420 | vlib_dirs_xtr = $(addprefix $(fnx_lib_dir)/, $(xtr_list)) |
| 421 | vlib_makefiles = $(addsuffix /GNUmakefile, $(vlib_dirs_lib) $(vlib_dirs_xtr)) |
| 422 | ifndef FC_NO_PEU_T2 |
| 423 | $(depends) : $(VERA_LIBDIR) $(vlib_makefiles) $(testbench_home_dir)/Makefile |
| 424 | $(SPEW_START) |
| 425 | $(make_lib_depends) \ |
| 426 | $(addprefix -libn=, $(lib_list) $(xtr_list)) \ |
| 427 | -current_dir=$(testbench_home_dir) \ |
| 428 | -o $(depends) \ |
| 429 | -VERA_LIBDIR=$(VERA_LIBDIR) |
| 430 | $(SPEW_END) |
| 431 | else |
| 432 | $(depends) : $(VERA_LIBDIR) $(vlib_makefiles) $(testbench_home_dir)/Makefile |
| 433 | $(SPEW_START) |
| 434 | $(make_lib_depends) \ |
| 435 | $(addprefix -libn=, $(lib_list) $(xtr_list)) \ |
| 436 | -current_dir=$(testbench_home_dir) \ |
| 437 | -o $(depends) \ |
| 438 | -VERA_LIBDIR=$(VERA_LIBDIR) \ |
| 439 | -no_peu |
| 440 | $(SPEW_END) |
| 441 | endif |
| 442 | else |
| 443 | include $(depends) |
| 444 | endif |
| 445 | |
| 446 | ################################################################################ |
| 447 | ### Coverage objects |
| 448 | ################################################################################ |
| 449 | COV_MAKE_CMD := $(MAKE) --no-print-directory -j $(p) |
| 450 | |
| 451 | ilu_peu: $(VERA_LIBDIR)/plusArgMacros.vri |
| 452 | @$(ECHO) "" |
| 453 | @$(ECHO) "[Building ilu_peu coverage" |
| 454 | if (test -d $(CTOP)/ilu_peu) then \ |
| 455 | ( cd $(CTOP)/ilu_peu; \ |
| 456 | if (test -f Makefile) then $(COV_MAKE_CMD) ; fi ) \ |
| 457 | fi |
| 458 | @$(ECHO) "Done with ilu_peu coverage]" |
| 459 | @$(ECHO) "" |
| 460 | |
| 461 | |
| 462 | |
| 463 | ## Coverage edit (2) |
| 464 | ## Copy next three lines, paste above, edit <unit> and uncomment |
| 465 | #<unit>: $(HDL_INCLUDE) |
| 466 | # @$(ECHO) "" |
| 467 | # @$(ECHO) "[Building <unit> coverage" |
| 468 | # if (test -d $(CTOP)/<unit>) then \ |
| 469 | # ( cd $(CTOP)/<unit>; \ |
| 470 | # if (test -f Makefile) then $(COV_MAKE_CMD) ; fi ) \ |
| 471 | # fi |
| 472 | # @$(ECHO) "Done with <unit> coverage]" |
| 473 | # @$(ECHO) "" |
| 474 | |
| 475 | ### End coverage related targets |
| 476 | |
| 477 | ############################################################################### |
| 478 | # clean up everything, since all created files go into $(VERA_LIBDIR) |
| 479 | ############################################################################### |
| 480 | |
| 481 | clean:: |
| 482 | rm -f $(VERA_LIBDIR)/* |
| 483 | rm -rf $(VERA_LIBDIR)/.* |
| 484 | |
| 485 | |
| 486 | SPEW_START = @$(ECHO) "----------------- Building $(@F) -----------------" |
| 487 | SPEW_END = @$(ECHO) "----------------- Done $(@F) ------------------\n" |
| 488 | |
| 489 | link = ln -sf |
| 490 | #---------------------------------------------------------------- |
| 491 | # VERA compile commands |
| 492 | #---------------------------------------------------------------- |
| 493 | common_vera_inc = $(DV_ROOT)/verif/env/common/vera/include |
| 494 | |
| 495 | vera = vera |
| 496 | VERA_CMP = $(vera) -cmp -HCnu |
| 497 | _inc_dirs = $(VERA_LIBDIR) |
| 498 | |
| 499 | _vera_cmp = $(VERA_CMP) $(testbench_vera_cmp_switches) $(VERA_DEFS) \ |
| 500 | $(addprefix -I, $(_inc_dirs)) |
| 501 | |
| 502 | _vera_cmp_all = |
| 503 | |
| 504 | _vera_vri_deps = $(addprefix $(VERA_LIBDIR)/, $(testbench_vera_interface_deps)) |
| 505 | |
| 506 | |
| 507 | #---------------------------------------------------------------------------- |
| 508 | # Vera object modules specific to this module test environment. |
| 509 | #---------------------------------------------------------------------------- |
| 510 | testbench_separate_obj = $(addprefix $(VERA_LIBDIR), $(testbench_vera_src:.vr=.vro)) |
| 511 | |
| 512 | ifndef FC_NO_PEU_T2 |
| 513 | testbench_combined_obj = $(VERA_LIBDIR)/Testbench.vro |
| 514 | testbench_all_obj = $(if $(testbench_combine_vera),$(testbench_combined_obj),$(testbench_separate_obj)) |
| 515 | else |
| 516 | testbench_all_obj = $(if $(testbench_combine_vera),$(testbench_separate_obj)) |
| 517 | endif |
| 518 | |
| 519 | testbench_file_list = $(VERA_LIBDIR)/$(SYS)_file.list |
| 520 | |
| 521 | .PHONY : testbench includes |
| 522 | #---------------------------------------------------------------------------- |
| 523 | # UD : To make ilu_peu and FC SAT use the same Makefile. |
| 524 | #---------------------------------------------------------------------------- |
| 525 | ifndef FC_NO_PEU_T2 |
| 526 | |
| 527 | ifdef N2_FC |
| 528 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 529 | $(VERA_LIBDIR)/report.a \ |
| 530 | $(VERA_LIBDIR)/denali_pcie.so |
| 531 | else |
| 532 | ifdef N2_IOS |
| 533 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 534 | $(VERA_LIBDIR)/report.a \ |
| 535 | $(VERA_LIBDIR)/denali_pcie.so |
| 536 | else |
| 537 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 538 | $(VERA_LIBDIR)/$(SYS)_top.vro \ |
| 539 | $(VERA_LIBDIR)/$(SYS)_top.vcon \ |
| 540 | $(VERA_LIBDIR)/report.a \ |
| 541 | $(VERA_LIBDIR)/denali_pcie.so |
| 542 | endif |
| 543 | endif |
| 544 | |
| 545 | else |
| 546 | |
| 547 | ifdef N2_FC |
| 548 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 549 | $(VERA_LIBDIR)/report.a |
| 550 | else |
| 551 | ifdef N2_IOS |
| 552 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 553 | $(VERA_LIBDIR)/report.a |
| 554 | else |
| 555 | testbench : $(testbench_file_list) $(testbench_all_obj) \ |
| 556 | $(VERA_LIBDIR)/$(SYS)_top.vro \ |
| 557 | $(VERA_LIBDIR)/$(SYS)_top.vcon \ |
| 558 | $(VERA_LIBDIR)/report.a |
| 559 | endif |
| 560 | endif |
| 561 | |
| 562 | endif |
| 563 | |
| 564 | ifndef FC_NO_PEU_T2 |
| 565 | $(testbench_all_obj) : $(VERA_LIBDIR)/Testbench.vr \ |
| 566 | includes \ |
| 567 | $(_vera_vri_deps) \ |
| 568 | $(VERA_LIBDIR)/seeding.vri \ |
| 569 | $(VERA_LIBDIR)/std_display_defines.vri \ |
| 570 | $(zeroin_define_src) \ |
| 571 | $(VERA_LIBDIR)/plusArgMacros.vri |
| 572 | else |
| 573 | $(testbench_all_obj) : includes \ |
| 574 | $(_vera_vri_deps) \ |
| 575 | $(VERA_LIBDIR)/seeding.vri \ |
| 576 | $(VERA_LIBDIR)/std_display_defines.vri \ |
| 577 | $(zeroin_define_src) \ |
| 578 | $(VERA_LIBDIR)/plusArgMacros.vri |
| 579 | endif |
| 580 | $(SPEW_START) |
| 581 | cd $(VERA_LIBDIR) ;\ |
| 582 | $(VERA_CMP) $(testbench_vera_cmp_switches) $(VERA_DEFS) -I. -f $(testbench_file_list) -dep_check . |
| 583 | $(SPEW_END) |
| 584 | |
| 585 | $(testbench_file_list) : $(depends) Makefile |
| 586 | $(SPEW_START) |
| 587 | $(RM) $@ ; \ |
| 588 | echo "$(zeroin_src)" >> $@; \ |
| 589 | echo "$(common_dir)/classes/std_display_class.vr" >> $@; \ |
| 590 | for i in $(actual_libdir_list); do\ |
| 591 | $(MAKE) -C $$i ; \ |
| 592 | done; |
| 593 | for i in $(actual_lib_list); do\ |
| 594 | echo "-f $(VERA_LIBDIR)/$$i.list" >> $@; \ |
| 595 | done; |
| 596 | ifndef FC_NO_PEU_T2 |
| 597 | ifeq ($(testbench_combine_vera),1) |
| 598 | echo "$(VERA_LIBDIR)/Testbench.vr" >> $@ |
| 599 | endif |
| 600 | ifndef N2_FC |
| 601 | ifndef N2_IOS |
| 602 | echo "$(testbench_home_dir)/$(SYS)_top.vr" >> $@ |
| 603 | endif |
| 604 | endif |
| 605 | else |
| 606 | for i in $(testbench_vera_src); do \ |
| 607 | echo "$(testbench_home_dir)/$$i" >> $@; \ |
| 608 | done |
| 609 | endif |
| 610 | $(SPEW_END) |
| 611 | |
| 612 | $(VERA_LIBDIR)/Testbench.vr: $(filter-out $(SYS)_top.vr, $(testbench_vera_src)) |
| 613 | $(RM) $@ |
| 614 | for i in $^; do \ |
| 615 | echo "#1 \"$(testbench_home_dir)/$$i\"" >> $@; \ |
| 616 | cat $$i >> $@; \ |
| 617 | done |
| 618 | includes: $(testbench_vera_incl_dir) |
| 619 | -for i in $^; do \ |
| 620 | $(link) $(testbench_home_dir)/$$i/*.vri $(VERA_LIBDIR)/ ; \ |
| 621 | done |
| 622 | -$(link) $(testbench_home_dir)/include/FIRE_local_access_define.vri $(VERA_LIBDIR)/ |
| 623 | -$(link) $(testbench_home_dir)/include/dmu.vri $(VERA_LIBDIR)/ |
| 624 | -$(link) $(testbench_home_dir)/include/ilupeuScenarioDefines.vri $(VERA_LIBDIR)/ |
| 625 | -$(link) $(testbench_home_dir)/include/ilupeu_defines.vri $(VERA_LIBDIR)/ |
| 626 | -$(link) $(testbench_home_dir)/include/ilupeu_report_macros.vri $(VERA_LIBDIR)/ |
| 627 | -$(link) $(testbench_home_dir)/include/top_defines.vri $(VERA_LIBDIR)/ |
| 628 | -$(link) $(testbench_home_dir)/include/ilu_peu.bind.vri $(VERA_LIBDIR)/ |
| 629 | -$(link) $(testbench_home_dir)/include/ilu_peu.if.vri $(VERA_LIBDIR)/ |
| 630 | ifdef N2_FC |
| 631 | ifndef FC_NO_PEU_T2 |
| 632 | -$(link) $(testbench_home_dir)/../../fc/vera/include/peu_verilog_tasks.vri $(VERA_LIBDIR)/ |
| 633 | endif |
| 634 | else |
| 635 | -$(link) $(testbench_home_dir)/include/peu_verilog_tasks.vri $(VERA_LIBDIR)/ |
| 636 | -$(link) $(testbench_home_dir)/include/verilog_tasks.vri $(VERA_LIBDIR)/ |
| 637 | endif |
| 638 | |
| 639 | |
| 640 | # create .vcon file that sims needs to create the .proj file |
| 641 | |
| 642 | .PRECIOUS : $(testbench_vcon) |
| 643 | $(testbench_vcon) : $(_vera_vri_deps) $(testbench_vcon:.vcon=.vr) |
| 644 | $(SPEW_START) |
| 645 | @$(ECHO) " --> Not rebuilding .vcon file since it requires hand edits. <--" |
| 646 | #$(RM) $@ |
| 647 | #$(vera) -cmp -verilog -vcon $(testbench_vera_cmp_switches) $(addprefix -I, $(_inc_dirs)) $(@:.vcon=.vr) $(@D) |
| 648 | $(SPEW_END) |
| 649 | |
| 650 | $(VERA_LIBDIR)/$(testbench_vcon) : $(testbench_vcon) |
| 651 | cp $< $@ |
| 652 | |
| 653 | common_vera_inc = $(DV_ROOT)/verif/env/common/vera/include |
| 654 | |
| 655 | $(VERA_LIBDIR)/%.vri : $(common_vera_inc)/%.vri |
| 656 | $(link) $< $(@D)/ |
| 657 | |
| 658 | $(VERA_LIBDIR)/%.vri : include/%.vri |
| 659 | $(link) $(testbench_home_dir)/$< $(@D)/ |
| 660 | |
| 661 | $(VERA_LIBDIR)/%.vri : csr/%.vri |
| 662 | $(link) $(testbench_home_dir)/$< $(@D)/ |
| 663 | |
| 664 | # Add extra dependency for testbench.vro to make sure it's done |
| 665 | # after the vshell generation. No rule here - that's still picked up |
| 666 | # from the generic %.vro rule. |
| 667 | $(testbench_vshell:.vshell=.vro) : $(testbench_vshell) |
| 668 | |
| 669 | $(VERA_LIBDIR)/%.vro : %.vr |
| 670 | $(SPEW_START) |
| 671 | $(RM) $@ |
| 672 | $(_vera_cmp) $< $(VERA_LIBDIR) |
| 673 | $(SPEW_END) |
| 674 | |
| 675 | |
| 676 | #---------------------------------------------------------------- |
| 677 | # Run archie and reggie |
| 678 | #---------------------------------------------------------------- |
| 679 | # - Can't find fnx reggie directory |
| 680 | reggie_dir = $(DV_ROOT)/verif/env/fire/runsim/reggie |
| 681 | archie_dir = $(DV_ROOT)/verif/env/fire/runsim/bin |
| 682 | generated_csr_test_dir = $(DV_ROOT)/verif/diag/vera/ilu_peu/src/generated_csr |
| 683 | |
| 684 | archie : csr/ilupeu_archie_conf.pl $(generated_csr_test_dir)/timestamp |
| 685 | |
| 686 | $(generated_csr_test_dir)/timestamp: |
| 687 | $(SPEW_START) |
| 688 | $(reggie_dir)/archie.pl \ |
| 689 | -v csrtool \ |
| 690 | -c csr/ilupeu_archie_conf.pl \ |
| 691 | -r csr/ilupeu_reggie_conf.pl \ |
| 692 | -b csr/ilupeu_archie_boilerplate.vr \ |
| 693 | -t $(generated_csr_test_dir) \ |
| 694 | -d $(generated_csr_test_dir) |
| 695 | cd $(generated_csr_test_dir) ; \ |
| 696 | $(archie_dir)/remove_access_methods.pl |
| 697 | touch $(generated_csr_test_dir)/timestamp |
| 698 | $(SPEW_END) |
| 699 | |
| 700 | csr/CSRCollection.vr : |
| 701 | $(SPEW_START) |
| 702 | $(reggie_dir)/reggie.pl \ |
| 703 | -d csrtool \ |
| 704 | -c csr/ilupeu_reggie_conf.pl \ |
| 705 | -i ./include \ |
| 706 | -o csr/CSRCollection.vr |
| 707 | $(SPEW_END) |
| 708 | |
| 709 | #---------------------------------------------------------------- |
| 710 | # make report.a |
| 711 | #---------------------------------------------------------------- |
| 712 | $(VERA_LIBDIR)/report.a: |
| 713 | $(SPEW_START) |
| 714 | $(MAKE) -C $(DV_ROOT)/verif/env/fnx/clib/report \ |
| 715 | VERA_LIBDIR=$(VERA_LIBDIR) |
| 716 | $(SPEW_END) |
| 717 | |
| 718 | ifndef FC_NO_PEU_T2 |
| 719 | #---------------------------------------------------------------- |
| 720 | # make denali_pcie.o |
| 721 | #---------------------------------------------------------------- |
| 722 | $(VERA_LIBDIR)/denali_pcie.so: |
| 723 | $(SPEW_START) |
| 724 | $(MAKE) -C $(DV_ROOT)/verif/env/fnx/clib/DenaliPCIE \ |
| 725 | VERA_LIBDIR=$(VERA_LIBDIR) |
| 726 | $(SPEW_END) |
| 727 | endif |
| 728 | #---------------------------------------------------------------- |
| 729 | # --- the end --- |
| 730 | #---------------------------------------------------------------- |