remove MiSoC dependency

This commit is contained in:
Florent Kermarrec 2015-02-21 19:27:03 +01:00
parent 9326985e05
commit 52f5955dca
6 changed files with 66 additions and 37 deletions

23
README
View file

@ -93,42 +93,35 @@ devel [AT] lists.m-labs.hk.
python3 setup.py install python3 setup.py install
cd .. cd ..
3. Obtain MiSoC and install it: Note: in case you have issues with Migen, please retry
git clone https://github.com/m-labs/misoc --recursive with our fork at:
cd misoc
python3 setup.py install
cd ..
Note: in case you have issues with Migen/MiSoC, please retry
with our forks at:
https://github.com/enjoy-digital/misoc https://github.com/enjoy-digital/misoc
https://github.com/enjoy-digital/migen
until new features are merged. until new features are merged.
4. Obtain LiteScope and install it: 3. Obtain LiteScope and install it:
git clone https://github.com/enjoy-digital/litescope git clone https://github.com/enjoy-digital/litescope
cd litescope cd litescope
python3 setup.py install python3 setup.py install
cd .. cd ..
5. Obtain LiteSATA 4. Obtain LiteSATA
git clone https://github.com/enjoy-digital/litesata git clone https://github.com/enjoy-digital/litesata
6. Build and load BIST design (only for KC705 for now): 5. Build and load BIST design (only for KC705 for now):
python3 make.py all (-s BISTSoCDevel to add LiteScopeLA) python3 make.py all (-s BISTSoCDevel to add LiteScopeLA)
7. Test design (only for KC705 for now): 6. Test design (only for KC705 for now):
go to ./test directory and run: go to ./test directory and run:
change com port in config.py to your com port change com port in config.py to your com port
python3 bist.py python3 bist.py
8. Visualize Link Layer transactions (if BISTSoCDevel): 7. Visualize Link Layer transactions (if BISTSoCDevel):
go to ./test directory and run: go to ./test directory and run:
python3 test_la.py [your_cond] python3 test_la.py [your_cond]
your_cond can be wr_cmd, id_cmd, rd_resp, ... your_cond can be wr_cmd, id_cmd, rd_resp, ...
(open test_la.py to see all conditions or add yours) (open test_la.py to see all conditions or add yours)
9. If you only want to build the core and use it with your 8. If you only want to build the core and use it with your
regular design flow: regular design flow:
python3 make.py -t core build-core python3 make.py -t core build-core

View file

@ -11,34 +11,33 @@ Download and install
- python3 setup.py install - python3 setup.py install
- cd .. - cd ..
.. note::
In case you have issues with Migen, please retry with our fork at:
https://github.com/enjoy-digital/migen
until new features are merged.
3. Obtain LiteScope and install it: 3. Obtain LiteScope and install it:
- git clone https://github.com/enjoy-digital/litescope - git clone https://github.com/enjoy-digital/litescope
- cd litescope - cd litescope
- python3 setup.py install - python3 setup.py install
- cd .. - cd ..
4. Obtain MiSoC and install it: 4. Obtain LiteSATA
- git clone https://github.com/m-labs/misoc --recursive
- cd misoc
- python3 setup.py install
- cd ..
.. note::
In case you have issues with Migen/MiSoC, please retry with our forks at:
https://github.com/enjoy-digital/misoc
https://github.com/enjoy-digital/migen
until new features are merged.
5. Obtain LiteSATA
- git clone https://github.com/enjoy-digital/litesata - git clone https://github.com/enjoy-digital/litesata
6. Build and load BIST design (only for KC705 for now): 5. Build and load BIST design (only for KC705 for now):
- python3 make.py all - python3 make.py all
7. Test design (only for KC705 for now): 6. Test design (only for KC705 for now):
- go to ./test directory and run: - go to ./test directory and run:
- python3 bist.py - python3 bist.py
7. Visualize Link Layer transactions (if BISTSoCDevel):
- go to ./test directory and run:
- python3 test_la.py [your_cond]
- your_cond can be wr_cmd, id_cmd, rd_resp, ...
(open test_la.py to see all conditions or add yours)
8. If you only want to build the core and use it with your 8. If you only want to build the core and use it with your
regular design flow: regular design flow:
- python3 make.py -t core build-core - python3 make.py -t core build-core

17
make.py
View file

@ -6,13 +6,22 @@ from mibuild.tools import write_to_file
from migen.util.misc import autotype from migen.util.misc import autotype
from migen.fhdl import verilog, edif from migen.fhdl import verilog, edif
from migen.fhdl.structure import _Fragment from migen.fhdl.structure import _Fragment
from migen.bank.description import CSRStatus
from mibuild import tools from mibuild import tools
from mibuild.xilinx_common import * from mibuild.xilinx_common import *
from misoclib.gensoc import cpuif
from litesata.common import * from litesata.common import *
def get_csr_csv(regions):
r = ""
for name, origin, busword, obj in regions:
if not isinstance(obj, Memory):
for csr in obj:
nr = (csr.size + busword - 1)//busword
r += "{}_{},0x{:08x},{},{}\n".format(name, csr.name, origin, nr, "ro" if isinstance(csr, CSRStatus) else "rw")
origin += 4*nr
return r
def _import(default, name): def _import(default, name):
return importlib.import_module(default + "." + name) return importlib.import_module(default + "." + name)
@ -124,7 +133,7 @@ BIST: {}
subprocess.call(["rm", "-rf", "build/*"]) subprocess.call(["rm", "-rf", "build/*"])
if actions["build-csr-csv"]: if actions["build-csr-csv"]:
csr_csv = cpuif.get_csr_csv(soc.cpu_csr_regions) csr_csv = get_csr_csv(soc.cpu_csr_regions)
write_to_file(args.csr_csv, csr_csv) write_to_file(args.csr_csv, csr_csv)
if actions["build-core"]: if actions["build-core"]:
@ -141,7 +150,7 @@ BIST: {}
tools.write_to_file("build/litesata.v", src) tools.write_to_file("build/litesata.v", src)
if actions["build-bitstream"]: if actions["build-bitstream"]:
vns = platform.build(soc, build_name=build_name, run=False) vns = platform.build(soc, build_name=build_name, run=True)
if hasattr(soc, "do_exit") and vns is not None: if hasattr(soc, "do_exit") and vns is not None:
if hasattr(soc.do_exit, '__call__'): if hasattr(soc.do_exit, '__call__'):
soc.do_exit(vns) soc.do_exit(vns)

View file

@ -0,0 +1,26 @@
import subprocess
from migen.fhdl.std import *
from migen.bank.description import *
def get_id():
output = subprocess.check_output(["git", "rev-parse", "HEAD"]).decode("ascii")
return int(output[:8], 16)
class Identifier(Module, AutoCSR):
def __init__(self, sysid, frequency, revision=None):
self._r_sysid = CSRStatus(16)
self._r_revision = CSRStatus(32)
self._r_frequency = CSRStatus(32)
###
if revision is None:
revision = get_id()
self.comb += [
self._r_sysid.status.eq(sysid),
self._r_revision.status.eq(revision),
self._r_frequency.status.eq(frequency),
]

View file

@ -8,7 +8,7 @@ from migen.genlib.cdc import *
from migen.genlib.resetsync import AsyncResetSynchronizer from migen.genlib.resetsync import AsyncResetSynchronizer
from migen.bank.description import * from migen.bank.description import *
from misoclib import identifier from targets import *
from litescope.common import * from litescope.common import *
from litescope.bridge.uart2wb import LiteScopeUART2WB from litescope.bridge.uart2wb import LiteScopeUART2WB
@ -76,7 +76,7 @@ class GenSoC(Module):
self.cpu_csr_regions = [] # list of (name, origin, busword, csr_list/Memory) self.cpu_csr_regions = [] # list of (name, origin, busword, csr_list/Memory)
# CSR # CSR
self.submodules.identifier = identifier.Identifier(0, int(clk_freq), 0) self.submodules.identifier = Identifier(0, int(clk_freq))
def add_cpu_memory_region(self, name, origin, length): def add_cpu_memory_region(self, name, origin, length):
self.cpu_memory_regions.append((name, origin, length)) self.cpu_memory_regions.append((name, origin, length))

View file

@ -1,5 +1,7 @@
from migen.genlib.resetsync import AsyncResetSynchronizer from migen.genlib.resetsync import AsyncResetSynchronizer
from targets import *
from litesata.common import * from litesata.common import *
from litesata.phy import LiteSATAPHY from litesata.phy import LiteSATAPHY
from litesata import LiteSATA from litesata import LiteSATA