...to get it done with 8 conference games within a division format:
2--permanent rivals (Rival #1 and Rival #2)
1--Rival #3/"flex" game
5--rotation games (to get to all locations in 4 years)
There will be one (or two) non-rival teams in your own divisions that won't be on the schedule in a given year. Rivals #3 will be in the opposite division. One or both of Rivals #1 and Rivals #2 will be in the same division. And no two teams in the same division will have the same two non-rival division opponents left off their schedule in a given year (this will prevent there from being three 8-0 unbeaten teams in the same division). Divisions realignment might need tweaking, but no need to get into that now since it will be less of a big deal since everyone will now play each other often.
All Rival #3 opponents will be play their games on the same weekend late in the season (Week 11). These games will be played UNLESS there are two teams in the SAME division that are undefeated (say, 6-0 in the ACC) that are NOT on each other's schedule in the season in question. If that is the case, the two unbeaten divisional teams must PLAY. And their two scheduled opponents will play each other the same weekend.
Week 12 will be reserved for #1 or #2 Rivalry games.
This flex scheduling will NOT be used to break ties among first place teams with conference losses. It will only be used to break ties among unbeatens. Otherwise, normal quirky tie-breaker rules can apply to leave Rival #3 games in tact. I figure that a schedule change using flex scheduling will be quite rare.
This will solve the problem of getting to all locations in a four-year cycle.
It will also assure that no teams unbeaten in the ACC will be left out of the championship game.
It will also keep the NCAA rule of having divisions as a qualification for a title game.
Now, if the ACC wants to man up and go to 9 games, then the scheduling gets that much easier to solve. If you go to 9 games, the above is still a great options.
Here is a preliminary look at the Rival 1, 2, and 3. Nothing set in stone, just a thought I through together last night.
SCHOOL--Rival 1, Rival 2, Rival 3 (flex)
Boston College--Syracuse, Miami, Pitt
Clemson--GT, FSU, Wake
Duke--Wake, Louisville, UNC
Florida State--Miami, Clemson, Louisville
Georgia Tech--Clemson, Wake, NCSt
Louisville--Pitt, Duke, FSU
Miami--FSU, BC, VT
North Carolina--UVa, NCSt, Duke
North Carolina St.--VT, UNC, GT
Pittsburgh--Louisville, Syracuse, BC
Syracuse--BC, Pitt, UVa
Virginia--UNC, VT, Syracuse
Virginia Tech--NCSt, UVa, Miami
Wake Forest--Duke, GT, Clemson
Here is how it would work: Let's say that division foes FSU and Syracuse would be 6-0 come week 11 yet not scheduled to play. In week 11, FSU would drop their opponent (Louisville) and so would Syracuse (Virginia). So the week 11 schedule would be FSU vs. Syracuse & Louisville vs. Virginia. Again, this would be rare. But it solves the problem of playing each other twice in four years and allowing for unbeatens to have a path to the ACCCG.
BTW, this is NOT a list of the top 3 rivals for each school. But the top 3 AVAILABLE "rivals" for each school. Bottom line is...not every school can be UNC's top rival.