self.add_period_constraint(self.lookup_request("eth_clocks", 1).rx, 1e9/125e6)
except ConstraintError:
pass
-
- def create_programmer(self, with_ispclock=True):
- _xcf_ispclock = """
- <Device>
- <SelectedProg value="FALSE"/>
- <Pos>2</Pos>
- <Vendor>Lattice</Vendor>
- <Family>ispCLOCK</Family>
- <Name>ispPAC-CLK5406D</Name>
- <IDCode>0x00191043</IDCode>
- <Operation>Erase,Program,Verify</Operation>
- <Bypass>
- <InstrLen>8</InstrLen>
- <InstrVal>11111111</InstrVal>
- <BScanLen>1</BScanLen>
- <BScanVal>0</BScanVal>
- </Bypass>
- </Device>
-"""
-
- _xcf_template = """
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE ispXCF SYSTEM "IspXCF.dtd" >
-<ispXCF version="3.4.1">
- <Comment></Comment>
- <Chain>
- <Comm>JTAG</Comm>
- <Device>
- <SelectedProg value="TRUE"/>
- <Pos>1</Pos>
- <Vendor>Lattice</Vendor>
- <Family>ECP5UM5G</Family>
- <Name>LFE5UM5G-45F</Name>
- <IDCode>0x81112043</IDCode>
- <File>{{bitstream_file}}</File>
- <Operation>Fast Program</Operation>
- </Device>{ispclock}
- </Chain>
- <ProjectOptions>
- <Program>SEQUENTIAL</Program>
- <Process>ENTIRED CHAIN</Process>
- <OperationOverride>No Override</OperationOverride>
- <StartTAP>TLR</StartTAP>
- <EndTAP>TLR</EndTAP>
- <VerifyUsercode value="FALSE"/>
- </ProjectOptions>
- <CableOptions>
- <CableName>USB2</CableName>
- <PortAdd>FTUSB-0</PortAdd>
- <USBID>LATTICE ECP5_5G VERSA BOARD A Location 0000 Serial Lattice ECP5_5G VERSA Board A</USBID>
- </CableOptions>
-</ispXCF>
-""".format(ispclock=_xcf_ispclock if with_ispclock else "")
-
- return LatticeProgrammer(_xcf_template)