-
Notifications
You must be signed in to change notification settings - Fork 42
Open
Description
Hello! I tested the tool for drawing timing diagrams and tried to make a copy of the timing diagram from their datasheet for the SDRAM controller IP block, but encountered some difficulties.
Original image from the datasheet:

Source code:
{"signal": [
{"name": "DTI_CLOCK", "wave": "01.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0.1.0."},
{"name": "DTI_CMD[0]", "wave": "x2...................2...2..................................................................x", "data": ["DES", "RD", "DES"]},
{"name": "DTI_CMD[1]", "wave": "x2...2...2..........|.......................................................................x", "data": ["DES", "RD", "DES"]},
{"name": "DTI_RDDATA_EN[0]", "wave": "0...................|........1.......0.......1.......0......................................."},
{"name": "DTI_RDDATA_EN[1]", "wave": "0...................|........1.......0...1.......0..........................................."},
{"name": "DTI_RDDATA[0]", "wave": "x2..................|....................................2...2...2.......2...2...2..........x", "data": ["", "D0", "D0", "", "D1", "D1"]},
{"name": "DTI_RDDATA[1]", "wave": "x2..................|....................................2...2...2...2...2...2..............x", "data": ["", "D0", "D0", "", "D1", "D1"]},
{"name": "DTI_RDDATA_VALID[0]", "wave": "0...................|....................................1.......0.......1.......0..........."},
{"name": "DTI_RDDATA_VALID[1]", "wave": "0........................................................1.......0...1.......0..............."},
{},
{},
{"name": "PHY_PHY_CLOCK", "wave": "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"},
{"name": "PHY_CMD", "wave": "x2..............2.2...........2.2...........................................................x", "data": ["DES", "RD", "DES", "RD", "DES"]},
{"name": "PHY_RDDATA_EN", "wave": "0...............................|...1.......0.....1.......0.................................."},
{"name": "PHY_RDDATA", "wave": "x2..............................|...................2.2.2.2.2.....2.2.2.2.2.................x", "data": ["", "D0", "D0", "D0", "D0", "", "D1", "D1", "D1", "D1"]},
{"name": "PHY_RDDATA_VALID", "wave": "0...............................|...................1.......0.....1.......0.................."},
{},
{},
{"name": "MEM_CK", "wave": "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010"},
{"name": "MEM_CMD", "wave": "x2....................2.2...........2.2.....................................................x", "data": ["DES", "RD", "DES", "RD", "DES"]},
{"name": "MEM_DQ", "wave": "z.....................................|......22222222z.....22222222z.........................", "data": ["0", "0", "0", "0", "0", "0", "0", "0", "1", "1", "1", "1", "1", "1", "1", "1"], "color": "blue"},
{"name": "MEM_DQS/N", "wave": "z.....................................|....1010101010z...1010101010z.........................", "data": ["0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"], "color": "blue"},
],
"edge": [
"[9:8.3]<->[9:33.3]{red} $tPHY\\_RDLAT$",
"[0:8.8]-[10v:8.8]{red,:}",
"[0:32.8]-[10v:32.8]{red,:}",
"[10:8.3]<->[10:17.3]{red} $tCMDGEAR$",
"[10^:16.8]-[17v:16.8]{red,:}",
"[10:32.3]<->[10:37.3]{red} $tDA$",
"[10^:36.8]-[16v:36.8]{red,:}",
"[16:36.3]<->[16:53.3]{red} $tPHY\\_RDLAT$",
"[15^:52.8]-[17v:52.8]{red,:}",
"[17:44.3]<->[17:53.3]{red} $tPHY$",
"[17^:44.8]-[21v:44.8]{red,:}",
"[17:16.3]<->[17:23.3]{red} $tCRTL$",
"[17^:22.8]-[21:22.8]{red,:}",
"[21^:22.3]<->[21^:45.3]{red} $RL=19$",
],
"config": {"hscale": 0.3}}
The image created using schemdraw:

- It is not possible to number the phases. I tried to do this using the tock parameter, but it can only set a sequential set of numbers; it is not possible to limit it to numbers according to the number of phases (for example, to set the alternation of numbers {0, 1} or {0, 1, 2}).
- It would be very convenient if it were possible to highlight phases with different colors, as shown in the figure from the datasheet.
- The arrows are not quite correctly aligned with the coordinates. It would be logical to have whole numbers on the gray dotted lines (on the grid). For example, the beginning of the PHY_RDLAT arrow is at coordinate 8.3, and the end of the arrow is at coordinate 33.3. I don't understand why the numbers are not equal to 8 and 33. If I set the coordinates to 8 and 33, I don't fit into the grid (gray dotted line).
- The situation with drawing custom dotted lines is similar. The red dotted line to the left of the PHY_RDLAT arrow is at coordinates 8.8. If I set the coordinate to 8.3 (the beginning of the PHY_RDLAT arrow), the red dotted line is at a distance from the PHY_RDLAT arrow. I don't understand why they don't match.
- Is it possible to place labels above the arrow? I noticed that the background for the label (text insertion) is very long, especially when using the text parameter. For example:
$\text{tPHY\_RDLAT}$ . This background sometimes completely covers the arrow; it would be better if the background were transparent. I am unable to place text above the arrow from the datasheet: tPHY_RDLAT=ROUNDDOWN ((RL+CMD _PHASE)/2. I can only place short text, for example: tPHY_RDLAT.
For the code $\\text{tPHY_RDLAT}$
![]()
For the code $\\text{tPHY_RDLAT=ROUNDDOWN((RL+CMD _PHASE)/2)}$
![]()
I made the images in a dark theme, because the background borders are more visible against a black background.
- It is not possible to change the font size for a specific line. Currently, this can only be done for the entire timing diagram. For example, in the timing diagram below, I would like to reduce the font size in the SDRAM_DQ line so that the labels D00, D01... do not extend beyond the boundaries of the fields.
Source code:
{"signal": [
{"name": "user_clk", "wave": "01...0...1...0...1...0...1...0"},
{"name": "tx_data_0", "wave": "z2.......z.......2.......z....", "data": ["D_00", "D_16"]},
{"name": "tx_data_1", "wave": "z2.......z.......2.......z....", "data": ["D_01", "D_17"]},
{"name": "tx_data_2", "wave": "z2.......2.......z............", "data": ["D_02", "D_10"]},
{"name": "tx_data_3", "wave": "z2.......2.......z............", "data": ["D_03", "D_11"]},
{"name": "tx_data_4", "wave": "z2.......2.......z............", "data": ["D_04", "D_12"]},
{"name": "tx_data_5", "wave": "z2.......2.......z............", "data": ["D_05", "D_13"]},
{"name": "tx_data_6", "wave": "z2.......2.......z............", "data": ["D_06", "D_14"]},
{"name": "tx_data_7", "wave": "z2.......2.......z............", "data": ["D_07", "D_15"]},
{"name": "dq_T", "wave": "01.......0...................."},
{"name": "SDRAM_CK_t", "wave": "101010101010101010101010101010"},
{"name": "SDRAM_CK_c", "wave": "010101010101010101010101010101"},
{"name": "SDRAM_DQ[63:0]", "wave": "z......22222222z.22222222z....", "data": ["D00", "D01", "D02", "D03", "D04", "D05", "D06", "D07", "D010", "D011", "D012", "D013", "D014", "D015", "D016", "D017"]},
],
"config": {"hscale": 0.5}}
- It is not possible to draw differential signals on line 1:

Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels