forked from Github_Repos/cvw
		
	Removed TOPO flag for synthesis; implied by tsmc28psyn
This commit is contained in:
		
							parent
							
								
									6d405ad69b
								
							
						
					
					
						commit
						bfc9a462d5
					
				@ -21,7 +21,6 @@ export MAXCORES ?= 1
 | 
			
		||||
export MAXOPT ?= 0
 | 
			
		||||
export DRIVE ?= FLOP
 | 
			
		||||
export USESRAM ?= 0
 | 
			
		||||
export USETOPO ?= 0
 | 
			
		||||
 | 
			
		||||
time := $(shell date +%F-%H-%M)
 | 
			
		||||
hash := $(shell git rev-parse --short HEAD)
 | 
			
		||||
@ -50,18 +49,6 @@ DIRS = $(DIRS32) $(DIRS64)
 | 
			
		||||
 | 
			
		||||
configs: $(CONFIG)
 | 
			
		||||
$(CONFIG):
 | 
			
		||||
ifeq ($(USETOPO), 0))
 | 
			
		||||
ifeq ($(TECH), tsmc28psyn))
 | 
			
		||||
	@echo "Bad configuration: you cannot use physical synthesis without tsmc28psyn and usetopo (i.e., -topo)"
 | 
			
		||||
	exit 1
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(USETOPO), 1))
 | 
			
		||||
ifneq ($(TECH), tsmc28psyn))
 | 
			
		||||
	@echo "Bad configuration: you cannot use usetopo (i.e., -topo) without tsmc28psyn"
 | 
			
		||||
	exit 1
 | 
			
		||||
endif
 | 
			
		||||
endif
 | 
			
		||||
	@echo $(CONFIG)
 | 
			
		||||
	cp -r $(OLDCONFIGDIR)/shared/*.vh $(CONFIGDIR)
 | 
			
		||||
	cp -r $(OLDCONFIGDIR)/$(CONFIG)/* $(CONFIGDIR)
 | 
			
		||||
@ -138,11 +125,10 @@ mkdirecs:
 | 
			
		||||
synth: mkdirecs configs rundc clean
 | 
			
		||||
 | 
			
		||||
rundc:
 | 
			
		||||
ifeq ($(USETOPO), 0)
 | 
			
		||||
	dc_shell-xg-t -64bit -f scripts/$(NAME).tcl | tee $(OUTPUTDIR)/$(NAME).out
 | 
			
		||||
else
 | 
			
		||||
	
 | 
			
		||||
ifeq ($(TECH), tsmc28psyn)
 | 
			
		||||
	dc_shell-xg-t -64bit -topographical_mode -f scripts/$(NAME).tcl | tee $(OUTPUTDIR)/$(NAME).out
 | 
			
		||||
else
 | 
			
		||||
	dc_shell-xg-t -64bit -f scripts/$(NAME).tcl | tee $(OUTPUTDIR)/$(NAME).out	
 | 
			
		||||
endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,9 +5,9 @@ import subprocess
 | 
			
		||||
from multiprocessing import Pool
 | 
			
		||||
import argparse
 | 
			
		||||
 | 
			
		||||
def runSynth(config, mod, tech, freq, maxopt, usesram, usetopo):
 | 
			
		||||
def runSynth(config, mod, tech, freq, maxopt, usesram):
 | 
			
		||||
    global pool
 | 
			
		||||
    command = "make synth DESIGN=wallypipelinedcore CONFIG={} MOD={} TECH={} DRIVE=FLOP FREQ={} MAXOPT={} USESRAM={} USETOPO={} MAXCORES=1".format(config, mod, tech, freq, maxopt, usesram, usetopo)
 | 
			
		||||
    command = "make synth DESIGN=wallypipelinedcore CONFIG={} MOD={} TECH={} DRIVE=FLOP FREQ={} MAXOPT={} USESRAM={} MAXCORES=1".format(config, mod, tech, freq, maxopt, usesram)
 | 
			
		||||
    pool.map(mask, [command])
 | 
			
		||||
 | 
			
		||||
def mask(command):
 | 
			
		||||
@ -34,34 +34,32 @@ if __name__ == '__main__':
 | 
			
		||||
    parser.add_argument("-e", "--tech", choices=techs, help = "Technology")
 | 
			
		||||
    parser.add_argument("-o", "--maxopt", action='store_true', help = "Turn on MAXOPT")
 | 
			
		||||
    parser.add_argument("-r", "--usesram", action='store_true', help = "Use SRAM modules")
 | 
			
		||||
    parser.add_argument("-topo", "--usetopo", action='store_true', help = "Run physical synthesis")	
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    tech = args.tech if args.tech else 'sky90'
 | 
			
		||||
    maxopt = int(args.maxopt)
 | 
			
		||||
    usesram = int(args.usesram)
 | 
			
		||||
    usetopo = int(args.usetopo)	
 | 
			
		||||
    mod = 'orig'
 | 
			
		||||
 | 
			
		||||
    if args.freqsweep:
 | 
			
		||||
        sc = args.freqsweep
 | 
			
		||||
        config = args.version if args.version else 'rv32e'
 | 
			
		||||
        for freq in [round(sc+sc*x/100) for x in freqVaryPct]: # rv32e freq sweep
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram, usetopo)
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram)
 | 
			
		||||
    elif args.configsweep:
 | 
			
		||||
        defaultfreq = 1500 if tech == 'sky90' else 5000
 | 
			
		||||
        freq = args.targetfreq if args.targetfreq else defaultfreq
 | 
			
		||||
        for config in ['rv32i', 'rv64gc', 'rv64i', 'rv32gc', 'rv32imc', 'rv32e']: #configs
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram, usetopo)
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram)
 | 
			
		||||
    elif args.featuresweep:
 | 
			
		||||
        defaultfreq = 500 if tech == 'sky90' else 1500
 | 
			
		||||
        freq = args.targetfreq if args.targetfreq else defaultfreq
 | 
			
		||||
        config = args.version if args.version else 'rv64gc'
 | 
			
		||||
        for mod in ['noFPU', 'noMulDiv', 'noPriv', 'PMP0', 'orig']: 
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram, usetopo)
 | 
			
		||||
            runSynth(config, mod, tech, freq, maxopt, usesram)
 | 
			
		||||
    else:
 | 
			
		||||
        defaultfreq = 500 if tech == 'sky90' else 1500
 | 
			
		||||
        freq = args.targetfreq if args.targetfreq else defaultfreq
 | 
			
		||||
        config = args.version if args.version else 'rv64gc'
 | 
			
		||||
        runSynth(config, mod, tech, freq, maxopt, usesram, usetopo)
 | 
			
		||||
        runSynth(config, mod, tech, freq, maxopt, usesram)
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user