tpb has quit [Remote host closed the connection]
tpb has joined #symbiflow
tcal has quit [Ping timeout: 256 seconds]
tcal has joined #symbiflow
citypw has joined #symbiflow
tcal has quit [Ping timeout: 240 seconds]
tcal has joined #symbiflow
Degi_ has joined #symbiflow
yeti has quit [Remote host closed the connection]
Degi has quit [Ping timeout: 240 seconds]
Degi_ is now known as Degi
yeti has joined #symbiflow
<sf-slack> <shashankmathew8> :wave: I’m here! What’d I miss?
<sf-slack> <shashankmathew8> Greetings to everyone!
<sf-slack> <shashankmathew8> I'm an undergraduate student.
<sf-slack> <shashankmathew8> Studying Electronics and Communication Engineering in India.
<sf-slack> <shashankmathew8> Graduating in 2021/
<sf-slack> <shashankmathew8> I hope all here are fine.
<sf-slack> <shashankmathew8> Click here to view my LinkedIn profile.
<sf-slack> <shashankmathew8> Let's connect!
<sf-slack> <shashankmathew8> Click here to view my GitHub profile.
<sf-slack> <shashankmathew8> Click here to view my StackOverflow profile
<sf-slack> <shashankmathew8> I am skilled with Verilog, SystemVerilog basics, C, C++ and Python.
<sf-slack> <shashankmathew8> I would love to join this project and contribute to it.
<sf-slack> <shashankmathew8> I also know basics of SystemC.
<sf-slack> <shashankmathew8> As our college is currently closed due to the pandemic, I have time to work on this project.
<sf-slack> <shashankmathew8> I also know Bash scripting.
shashankvm has joined #symbiflow
shashankvm has quit [Remote host closed the connection]
shashankvm has joined #symbiflow
adjtm has joined #symbiflow
adjtm_ has quit [Ping timeout: 264 seconds]
Bertl_oO is now known as bertl_zZ
bertl_zZ is now known as Bertl_zZ
Vonter has quit [Ping timeout: 256 seconds]
Vonter has joined #symbiflow
OmniMancer has joined #symbiflow
OmniMancer1 has quit [Ping timeout: 240 seconds]
OmniMancer has quit [Quit: Leaving.]
OmniMancer has joined #symbiflow
<shashankvm> HI
<shashankvm> I am an engineering student
tonyn14 has joined #symbiflow
shashankvm has quit [Remote host closed the connection]
tcal has quit [Ping timeout: 250 seconds]
pdp7 has quit [Changing host]
_whitelogger has joined #symbiflow
tonyn14 has quit [Remote host closed the connection]
tbisker8 has quit [Ping timeout: 260 seconds]
titanbiscuit has joined #symbiflow
Bertl_zZ is now known as Bertl
az0re has quit [Remote host closed the connection]
Vonter has quit [Ping timeout: 256 seconds]
Vonter has joined #symbiflow
OmniMancer has quit [Quit: Leaving.]
FFY00 has joined #symbiflow
epony has quit [Quit: reconfig]
titanbiscuit has quit [Ping timeout: 250 seconds]
titanbiscuit has joined #symbiflow
Bertl is now known as Bertl_oO
kraiskil has joined #symbiflow
citypw has quit [Ping timeout: 260 seconds]
clay_1 has joined #symbiflow
clay_1 has quit [Remote host closed the connection]
CMP1 has joined #symbiflow
<CMP1> Hi all, I am reading the documentation in project XRAY about clocks regions, domains ad HROWs and I have got very confused
<CMP1> In the overview section is stated that `Clock domains have a fixed height of 50 interconnect tiles centered around the horizontal clock lines (25 above, 25 below)`
<CMP1> In the glossary the 'clock region' is defined as 'Portion of a device including up to 12 clock domains. A clock region is situated to the left or right of the global clock spine, and is 50 CLBs tall on Xilinx 7 series devices. The clock region includes all synchronous elements in the 50 CLBs and one I/O bank, with a horizontal clock row at its
<CMP1> center.`
<CMP1> Isnt that contradicting ? or do I understand it wrong ?
<litghost> No contradiction
<CMP1> A horizontal clock row consists of 12 horizontal clock lines ?
<litghost> No, you are misreading
<litghost> There are up to 12 clock domains in a device, which are 50 units tall
<CMP1> each, right ?
<CMP1> also the ` A clock region is situated to the left or right of the global clock spine, and is 50 CLBs tall on Xilinx 7 series devices` doesnt indicate that the clock region is same as tall ?
<litghost> ?
<litghost> Both parts of that sentence is true
<CMP1> maybe the reason I dont understand it is because I have the notion that one should be superset of the other
<litghost> A clock region is to the left or right
<litghost> And is 50 units tall
<litghost> What should be a super set of the other?
<CMP1> clock region and clock domain
<litghost> Clock region (or CMT) is the only concept
tcal has joined #symbiflow
<litghost> Clock domain's are something else entirely
<litghost> So clock domain -> Clock region
<CMP1> So clock regions are the boxes that you can see in vivado and in 7 series they are up to 12 in number. Each of them is 50 units tall (no info about withd? ) and those 50 are split in half by the Horizontal clock row (which includes 12 clocks with that number having nothing to do with the number of clock regions)
<CMP1> how correct is that statement ?
<litghost> Yes
<litghost> Width is weird, because some CMT's have hard blocks and such
<CMP1> I see and that 12 is refering to one half of the device so they can actually be 24?
<litghost> Which parts have 24 CMT's
<litghost> ?
<CMP1> I dont know, I just found this line in UG472
<CMP1> `The number of clock regions varies with device size, from one clock region in the smallest device to 24 clock regions in the largest one`
<CMP1> so I based my assumption on that
<CMP1> Leaving that asside and combining the rest I have the following:
<CMP1> Clock domain is defined asPortion of the device controlled by one clock. A clock domain is part of a horizontal clock row By that I understand that since HROW has 12 horizontal clocks and each clock region has one HROW this means that each clock region has 12 clock domains.
<litghost> Incorrect
<CMP1> In what part ?
<litghost> All of it
<litghost> Sentence 1 is mostly wrong
<litghost> Sentence 2 is completely wrong
<litghost> A clock domain is simply the netlist of things clocked by common clock
<CMP1> by sentence one you mean this part, right ? `Clock domain is defined asPortion of the device controlled by one clock. A clock domain is part of a horizontal clock row`
<litghost> That is two sentences
<CMP1> so this is both the mostly wrong and the completely wrong part
<litghost> Yes
<litghost> A clock domain is simply the netlist of things clocked by common clock
<litghost> The 7-series fabric provides BUFR, BUFMR, BUFG and BUFH drivers to express clocks
<litghost> The typical clocking arrangement, is to first bring the clock to a BUFG, which drives 1 of 32 global clock spines that run to all CMT's
<CMP1> so it does not create a topological reagion ? ( By the way those two sentenses are copied from the glossary entry of clock domain should we issue a "bug" ? )
<litghost> The horizontial clock spines (12 per CMT) are driven from BUFH, which can connect to the global clock spine (or other sources)
<litghost> "topological region"? meaning what?
<CMP1> meaning a specific set of tiles. But probably it cant happen because theoretically if you have 100% utilization and only one clock you end up with one clock domain. So number of clock domains depend on how many different clocks you define in your design
<CMP1> is that correct ?
<litghost> True, but clock domains are a totally independent concept from clock region (e.g. CMT)
<litghost> CMT's are defined the hardware design
<CMP1> litghost not entirely but thats where I got the 25 clock regions number from
<litghost> CMP1: Do you understand figure 1-1?
<litghost> Also figure 1-2
<CMP1> Not entirely, I understand the clock regions and the HROWs that are inside them. I dont understand why it has three collumns though instead of the 2 I expected
<litghost> The GT column? That isn't always present
<CMP1> good then
<CMP1> about the second one
<litghost> The CMT column?
<CMP1> the clock back bone is always next to IOs ?
<litghost> Yes
<litghost> That is where the PLL and MMCM's are located
<litghost> Along with the BUFIO's, etc
<CMP1> yes I think I understand that there are several collumns in each clock region, if its a clb collumn it will have 50 tiles , if its a BRAM 10 etc
<litghost> Yes
<litghost> The height of the BRAM tile is 5
<litghost> Height of a CLBLL is 1
<litghost> DSP's are 5
<CMP1> nice
<CMP1> now about the HROW, its horizontal, and I guess that the 12 clocks are inside it but then go perpendicular to reach the elements of its column ?
<litghost> Yes
<CMP1> By counting the number of CLBs, they are 12 so BRAM, DSPs share the clock with their neighboring CLBs ?
<CMP1> ( I meant CLB collumns)
<litghost> Every logic tile belongs to a CMT
<litghost> Every logic tile in the same CMT shares the same CMT clock sources (BUFH, BUFR, BUFMR)
<litghost> BUFIO
<CMP1> I got a bit confused here, if they all share the same clock what are the 12 clock lines of HROW for ?
<litghost> They don't share the same clock
<litghost> In the horizonital spine there are 12 BUFH output wires
<litghost> and 4 BUFIO, 4 BUFR and 8 BUFMR wires
<CMP1> I should probably read what those types are first
<litghost> I recommend just opening Vivado and looking at the routing resource view
<litghost> Picture, 1000 words, etc,etc
<CMP1> I think I have understood though the following part of the glossary `Portion of a device including up to 12 clock domains` It means that since the hrow has 12 clocks you can create up to 12 clock domains there, is that correct ?
<litghost> No
<CMP1> And yes I totally agree with that I have it open and look at it as we speak
<CMP1> then where does this limitation come from ?
<litghost> Limitation?
<litghost> What limitation?
<CMP1> That a clock region is `Portion of a device including up to 12 clock domains.`
<litghost> So if each clock domain is driven by a BUFH (which is typical), then each CMT can only have 12 BUFHs, therefore only 12 domains
<litghost> Techinically speaking you can more domains if you get creative and use BUFR's, BUFIO's and BUFMR's, but then you are straying from the global clock spine and have to worry about skew
<CMP1> So what I said earlier is correct as long as you keep using the global spine ?
<litghost> Which sentence?
<CMP1> I think I have understood though the following part of the glossary `Portion of a device including up to 12 clock domains` It means that since the hrow has 12 clocks you can create up to 12 clock domains there, is that correct ?
<litghost> Basically
<litghost> And that statement is full of caveats
<litghost> For example, if you wanted to clock gate some logic (for power savings), but have that logic be on the sameish domain as the other logic, that would require two BUFH's
<litghost> The more specific and correct version of the above sentence is that a CMT has 12 BUFH's, which could accommodate 12 clock domains
<CMP1> great ! thank you very much for all your patience
<litghost> Again, a CMT can have more than 12 clock domains if you use: interconnect based clocks, BUFR's, BUFMR's, BUFIO's
<litghost> However BUFR/BUFMR/BUFIO and interconnect drive clocks are not typical usage at all
<CMP1> that means that vivado would never use them without you asking specifically for it, right ?
<litghost> Correct
<litghost> I believe by default all clocks get an implicit BUFG, which then requires a BUFH to enter the CMT
az0re has joined #symbiflow
<litghost> Therefore, 12 clock domains per CMT is a reasonable approximation of the truth for most users
<litghost> I want to be clear though, the clock domain may span multiple CMT's
<litghost> That is typical and expected
<CMP1> I see, its because if you have a big design with a signle clock it will need to span to more area than the one of a CMT, right ?
<litghost> Sure
<CMP1> and when that happens it gets connected to one of the 12 clocks of the neighbouring CMT, correct ?
<litghost> no
<litghost> The global clock spine has capacity for 32 clocks
<litghost> When using BUFGs, the domain begins at the BUFG, then enters a CMT via a BUFH
<litghost> The whole point of the global clock spine is that neighbooring CMT's don't matter
<litghost> BUFMR affects neighbooring CMT's, but again that is not typical usage
<CMP1> So every CMT that is beeing used will have one out of 12 HROW clocks connected to the global clock spine ?
<litghost> No
<litghost> Each clock domain in use in a CMT from the global clock will consume 1 BUFH
<CMP1> so if we assume all CMTs are in the same clock domain
<CMP1> they will have to spend one BUFH each to get connected in the global clock
<CMP1> right ?
<litghost> yes
<litghost> And each CMT has 12 BUFH's that can connect to any of the global clock spine clocks
<litghost> Amongst other sources
<CMP1> great
<CMP1> thank you !
epony has joined #symbiflow
CMP1 has quit [Ping timeout: 240 seconds]
buzepeng has joined #symbiflow
<lambda> daveshah: any idea what could be choking nextpnr-xilinx routing with newer yosys? not sure if you saw my messages the other day, but it suddenly takes 2h to route my design and timing is horrible.
buzepeng has quit [Quit: Ping timeout (120 seconds)]
<daveshah> I highly doubt it is a Yosys change, probably random bad luck. I'm trying to chase down some odd router bugs, but trying a different --seed value would be interesting
<lambda> daveshah: yeah, I can't reproduce it anymore now. it was reproducible before, interestingly
<lambda> what's the default seed nextpnr uses?
<daveshah> 1 iirc
<lambda> hm, so also deterministic
<daveshah> There's an occasional bug where the router gets stuck "fighting" for a particular wire often around BRAM, it was probably some manifestation of that
kraiskil has quit [Ping timeout: 265 seconds]
tcal has quit [Ping timeout: 264 seconds]
<lambda> daveshah: by the way, I tried just commenting out https://github.com/daveshah1/nextpnr-xilinx/blob/xilinx-upstream/xilinx/python/xilinx_device.py#L467-L468, the commit that introduced it (f45c1cb38) sounds like it won't affect me, and I want to use all my PLLs ;)
<tpb> Title: nextpnr-xilinx/xilinx_device.py at xilinx-upstream · daveshah1/nextpnr-xilinx · GitHub (at github.com)
<lambda> ghdlsynth doesn't support inout yet, so won't get very far with DRAM anyways, but if it works I'm one step closer
<lambda> welp, fasm2frames.py doesn't like that. oh well
<daveshah> Yeah, I don't think the bitstream data is there for those tiles yet
az0re has quit [Quit: Leaving]
az0re has joined #symbiflow
OmniMancer has joined #symbiflow
Finde has quit [Quit: WeeChat 1.0.1]
Finde has joined #symbiflow
tcal has joined #symbiflow
<litghost> lambda: Which tile are you trying to put a PLL in?
<litghost> On the A50 fabrics, the only PLL's are the ones in CMT_TOP_L_UPPER_T tile types
<litghost> So I'd expect uncommenting that line would have no affect
_whitelogger has joined #symbiflow
_whitelogger has joined #symbiflow
_whitelogger has joined #symbiflow
<mithro> lambda: I would be interested to see how vpr does with your design if it is open source? We could even add it as a test bench in https://github.com/SymbiFlow/fpga-tool-perf if it is hitting some type of pathological behaviour.
<tpb> Title: GitHub - SymbiFlow/fpga-tool-perf: FPGA tool performance profiling (at github.com)