Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve timing model support for 7-series #293

Closed
litghost opened this issue Dec 19, 2018 · 8 comments
Closed

Improve timing model support for 7-series #293

litghost opened this issue Dec 19, 2018 · 8 comments
Assignees
Labels
arch-xc7 Issues related to the XC7 architecture

Comments

@litghost
Copy link
Contributor

Currently the timing model is total nonsense because of bad constants for segments and pips.

@litghost litghost added the arch-xc7-artix7 Issue related to the Artix 7 architecture description. label Dec 19, 2018
@mithro
Copy link
Contributor

mithro commented Dec 19, 2018

There is a timing fuzzer in Project X-Ray which generates some timing data. It can be found at https://github.com/SymbiFlow/prjxray/tree/master/fuzzers/007-timing

GitHub
Documenting the Xilinx 7-series bit-stream format. - SymbiFlow/prjxray

@litghost litghost added this to To do in SymbiFlow Focus Mar 4, 2019
@kgugala kgugala moved this from To do to In progress in SymbiFlow Focus Mar 7, 2019
@kgugala kgugala self-assigned this Mar 7, 2019
@kgugala
Copy link
Contributor

kgugala commented Mar 7, 2019

BEL timings seem to easily obtainable using report_property and get_timing_arcs functions.

e.g for LUT6 I have:

report_property -all [lindex [get_timing_arcs -of_objects [get_cells  lut]] 0]
Property             Type    Read-only  Value
CLASS                string  true       timing_arc
DELAY_FAST_MAX_FALL  double  true       0.056
DELAY_FAST_MAX_RISE  double  true       0.056
DELAY_FAST_MIN_FALL  double  true       0.045
DELAY_FAST_MIN_RISE  double  true       0.045
DELAY_MAX_FALL       double  true       0.124
DELAY_MAX_RISE       double  true       0.124
DELAY_MIN_FALL       double  true       0.045
DELAY_MIN_RISE       double  true       0.045
DELAY_SLOW_MAX_FALL  double  true       0.124
DELAY_SLOW_MAX_RISE  double  true       0.124
DELAY_SLOW_MIN_FALL  double  true       0.100
DELAY_SLOW_MIN_RISE  double  true       0.100
FROM_PIN             pin     true       lut/I0
IS_DISABLED          bool    true       0
IS_USER_DISABLED     bool    true       0
LIB_CELL             string  true       xt_artix7/LUT6
NAME                 string  true       {lut/I0 --> lut/O [combinational] }
SENSE                string  true       negative_unate
TO_PIN               pin     true       lut/O
TYPE                 enum    true       combinational

while for FDRE:

report_property -all [lindex [get_timing_arcs -of_objects [get_cells FDRE_inst]] 2]
Property             Type    Read-only  Value
CLASS                string  true       timing_arc
DELAY_FAST_MAX_FALL  double  true       0.175
DELAY_FAST_MAX_RISE  double  true       0.175
DELAY_FAST_MIN_FALL  double  true       0.141
DELAY_FAST_MIN_RISE  double  true       0.141
DELAY_MAX_FALL       double  true       0.456
DELAY_MAX_RISE       double  true       0.456
DELAY_MIN_FALL       double  true       0.141
DELAY_MIN_RISE       double  true       0.141
DELAY_SLOW_MAX_FALL  double  true       0.456
DELAY_SLOW_MAX_RISE  double  true       0.456
DELAY_SLOW_MIN_FALL  double  true       0.367
DELAY_SLOW_MIN_RISE  double  true       0.367
FROM_PIN             pin     true       FDRE_inst/C
IS_DISABLED          bool    true       0
IS_USER_DISABLED     bool    true       0
LIB_CELL             string  true       xt_artix7/FDRE
NAME                 string  true       {FDRE_inst/C --> FDRE_inst/Q [Reg Clk to Q] }
SENSE                string  true       non_unate
TO_PIN               pin     true       FDRE_inst/Q
TYPE                 enum    true       Reg Clk to Q

I'll create a fuzzer for getting all of those

@mithro
Copy link
Contributor

mithro commented Mar 7, 2019

Please take a look at https://github.com/SymbiFlow/symbiflow-arch-defs/pull/165/files for how I was going about it for the ice40.

Ideally I think we want to end up with a SDF file which describes the timing internally of the SLICEL.

GitHub

@kgugala
Copy link
Contributor

kgugala commented Mar 7, 2019

Do we have any tool that can update arch.xml with data from SDF?

@mithro
Copy link
Contributor

mithro commented Mar 7, 2019

Not yet.

@mithro
Copy link
Contributor

mithro commented Mar 7, 2019

@kgugala - VtR however will produce a SDF file for a place and routed design at the end and a number of other tools accept SDF as input.

@elms
Copy link
Collaborator

elms commented Apr 12, 2019

#55 relates to this. I think specify blocks are parsed by yosys but ignored (I have not confirmed this)

#574 is the start importing before v2x

Here is a working document to capture some thoughts.

@elms
Copy link
Collaborator

elms commented Apr 12, 2019

@kgugala Here is an iCE40 SDF with a clear violation of the SDF standard around the PLL.

@mithro mithro added arch-xc7 Issues related to the XC7 architecture and removed arch-xc7 Issues related to the XC7 architecture arch-xc7-artix7 Issue related to the Artix 7 architecture description. labels Apr 23, 2019
SymbiFlow Focus automation moved this from In progress to Done Oct 22, 2019
kgugala referenced this issue in antmicro/f4pga-arch-defs May 27, 2021
…ird_party/prjxray-80726cb

Bump third_party/prjxray from `086f9a1` to `80726cb`
@kgugala kgugala removed this from Done in SymbiFlow Focus Sep 3, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
arch-xc7 Issues related to the XC7 architecture
Projects
None yet
Development

No branches or pull requests

4 participants