1 package edu.berkeley.slipway.gui;
3 import static com.atmel.fpslic.FpslicConstants.*;
4 import static edu.berkeley.slipway.gui.GuiConstants.*;
5 import com.atmel.fpslic.*;
6 import edu.berkeley.slipway.*;
9 public class Inspector {
11 private static P bump(P p, R r) {
12 p = p.translate(0, 15);
13 if (p.y + 15 > r.maxy()) {
14 p = new P(p.x + 200, r.miny() + 20);
18 public static void draw(G g, R r, FpslicDevice.Cell cell) {
22 g.setFont(new Font("monospaced", 0, 14));
23 if (cell==null) return;
25 int line = (int)(r.miny() + 10);
26 P p = new P(r.minx() + 10, r.miny() + 20);
27 g.drawString("selected: " + cell.col + "," + cell.row, p); p = bump(p, r);
28 g.drawString(" xlut: " + XLUT_EQUATIONS[cell.xlut() & 0xff], p); p = bump(p, r);
29 g.drawString(" ylut: " + YLUT_EQUATIONS[cell.ylut() & 0xff], p); p = bump(p, r);
32 case NW : xi = "NW"; break;
33 case NE : xi = "NE"; break;
34 case SW : xi = "SW"; break;
35 case SE : xi = "SE"; break;
36 case NONE : xi = "."; break;
37 default: xi = "L"+(cell.xi()-L0); break;
39 g.drawString("x-in mux: " + xi, p); p = bump(p, r);
43 case NORTH : yi = "NORTH"; break;
44 case SOUTH : yi = "SOUTH"; break;
45 case EAST : yi = "EAST"; break;
46 case WEST : yi = "WEST"; break;
47 case NONE : yi = "."; break;
48 default: yi = "L"+(cell.yi()-L0); break;
50 g.drawString("y-in mux: " + yi, p); p = bump(p, r);
52 g.drawString("w-in mux: " + (cell.wi()==NONE ? "." : ("L"+(cell.wi()-L0))),
54 g.drawString("z-in mux: " + (cell.zi()==NONE ? "." : ("L"+(cell.zi()-L0))),
59 case TMUX_FB: tm = "fb"; break;
60 case TMUX_W_AND_FB: tm = "w&fb"; break;
61 case TMUX_Z: tm = "z"; break;
62 case TMUX_W_AND_Z: tm = "w&z"; break;
63 case TMUX_W: tm = "w"; break;
65 g.drawString("t-in mux: " + tm, p); p = bump(p, r);
67 g.drawString(" set/rst: " + (cell.ff_reset_value() ? "reset=SET" : "."),
71 for(int i=0; i<5; i++) outs += (cell.out(L0+i) ? (i+" ") : ". ");
72 g.drawString(" out: " + outs,
75 for(int i=0; i<5; i++) hs += (cell.hx(L0+i) ? (i+" ") : ". ");
76 g.drawString(" h conn: " + hs,
79 for(int i=0; i<5; i++) vs += (cell.vx(L0+i) ? (i+" ") : ". ");
80 g.drawString(" v conn: " + vs,
82 g.drawString("out enab: " + (cell.oe()==H4 ? "H4" : cell.oe()==V4 ? "V4" : "."),
84 g.drawString(" c-mux: " + (cell.c()==ZMUX ? "zmux" : cell.c()==XLUT ? "x-lut" : "y-lut"),
86 g.drawString(" fb src: " + (cell.f() ? "clocked" : "."),
88 g.drawString(" bypass: " + (cell.b() ? "clocked" : "."),
90 g.drawString(" x out: " + (cell.xo() ? (cell.b() ? "register" : "center") : "."),
92 g.drawString(" y out: " + (cell.yo() ? (cell.b() ? "register" : "center") : "."),